How to have semicolon at the end of every line?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to have semicolon at the end of every line?
# 1  
Old 08-15-2013
How to have semicolon at the end of every line?

Hi,

I wanted to create an automated script that will output a create table statement in unix. Below is the input and the desired output:

INPUT:
Code:
desc ZZ_APL_TIDDATELIST
(
TID           NUMBER
AEX_DATE      TIMESTAMP(6)
)

desc ZZ_APL_TIDLIST
(
TID       NUMBER
)

desc ZZ_APL_TIDTYPELIST
(
TID          NUMBER
INSTYPE      VARCHAR2(3)
)

desc ZZ_CAM_AEORDER
(
ORDER_ID      NUMBER
)

desc ZZ_CAM_AETID
(
TID                          NUMBER
INSTRUMENT_GROUP_ABBREV      CHAR(3)
INSTRUMENT_TYPE_ID           NUMBER
)

desc ZZ_OM_WRK_TABLE
(
TIME                DATE
PLACED              NUMBER
RUNNING_PLACED      NUMBER
FILLED              NUMBER
RUNNING_FILLED      NUMBER
)

OUTPUT:
Code:
desc ZZ_APL_TIDDATELIST
(
TID           NUMBER;
AEX_DATE      TIMESTAMP(6)
);

desc ZZ_APL_TIDLIST
(
TID       NUMBER
);

desc ZZ_APL_TIDTYPELIST
(
TID          NUMBER;
INSTYPE      VARCHAR2(3)
);

desc ZZ_CAM_AEORDER
(
ORDER_ID      NUMBER
);

desc ZZ_CAM_AETID
(
TID                          NUMBER;
INSTRUMENT_GROUP_ABBREV      CHAR(3);
INSTRUMENT_TYPE_ID           NUMBER
);

desc ZZ_OM_WRK_TABLE
(
TIME                DATE;
PLACED              NUMBER;
RUNNING_PLACED      NUMBER;
FILLED              NUMBER;
RUNNING_FILLED      NUMBER
);


Many thanks
# 2  
Old 08-15-2013
Your file is not consistent
; behind every line staring with ) OK

Code:
INSTYPE      VARCHAR2(3)
INSTRUMENT_GROUP_ABBREV      CHAR(3);

Why do only one of this has ; behind


Same here, why?
Code:
TID                          NUMBER;
INSTRUMENT_TYPE_ID           NUMBER


EDIT:
I do see now that where you have ) in a new line, line above do not have ;

Last edited by Jotne; 08-15-2013 at 02:55 AM..
# 3  
Old 08-15-2013
this is so because i wanted to create a script that will output a create table statement that will be run using isql.

for the semicolon (';'), this should be comma(,). Please see updated output:

Code:
desc AEXEO.ZZ_APL_TIDTYPELIST
(
TID          NUMBER,
INSTYPE      VARCHAR2(3)
);

desc AEXEO.ZZ_CAM_AEORDER
(
ORDER_ID      NUMBER
);

desc AEXEO.ZZ_CAM_AETID
(
TID                          NUMBER,
INSTRUMENT_GROUP_ABBREV      CHAR(3),
INSTRUMENT_TYPE_ID           NUMBER
);

# 4  
Old 08-15-2013
Not a clean small code, but his should give what you want:

Code:
awk '{sub(/^\)/,"&;");if ($0~/^[A-Z]/&& a~/^[A-Z]/ && !/^desc/) {printf ",\n%s",$0} else printf "\n%s",$0 ;a=$0} END {print ""}' file

desc ZZ_APL_TIDDATELIST
(
TID           NUMBER,
AEX_DATE      TIMESTAMP(6)
);

desc ZZ_APL_TIDLIST
(
TID       NUMBER
);

desc ZZ_APL_TIDTYPELIST
(
TID          NUMBER,
INSTYPE      VARCHAR2(3)
);

desc ZZ_CAM_AEORDER
(
ORDER_ID      NUMBER
);

desc ZZ_CAM_AETID
(
TID                          NUMBER,
INSTRUMENT_GROUP_ABBREV      CHAR(3),
INSTRUMENT_TYPE_ID           NUMBER
);

desc ZZ_OM_WRK_TABLE
(
TIME                DATE,
PLACED              NUMBER,
RUNNING_PLACED      NUMBER,
FILLED              NUMBER,
RUNNING_FILLED      NUMBER
);

EDIT: some shorter version
Code:
awk '{sub(/^\)/,"&;");s=($0~/^[A-Z]/&& a~/^[A-Z]/ && !/^desc/)?",":"";printf s"\n%s",$0;a=$0} END {print ""}' file


Last edited by Jotne; 08-15-2013 at 05:39 AM.. Reason: Added new version
# 5  
Old 08-15-2013
hi Jotne,

can you please explain what the following regex do.

Thanks
# 6  
Old 08-16-2013
Code:
awk '{
	sub(/^\)/,"&;")					# Replace ")" with ");"
	s=($0~/^[A-Z]/&& a~/^[A-Z]/ && !/^desc/)?",":""	# IF this line and previous line start with "A-Z" and not "desc" set "s" to "," else set it to ""
	printf s"\n%s",$0				# Print this line "$0" using "s" as formating pluss new line
	a=$0} 						# set a=this line
END {
	print ""}' file					# print a new line

This User Gave Thanks to Jotne For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace semicolon within double quotes in a file with semicolon delimiter

Hello Team, Could you please help me with the below question? I have a file with the following properties 1) File Delimiter is ; 2) Text columns are within double quotes 3) Numeric columns will not have double quotes 4) File has total 6 columns Please see a sample record from file ... (3 Replies)
Discussion started by: sam99
3 Replies

2. Shell Programming and Scripting

With script bash, read file line per line starting at the end

Hello, I'm works on Ubuntu server My goal : I would like to read file line per line, but i want to started at the end of file. Currently, I use instructions : while read line; do COMMAND done < /var/log/apache2/access.log But, the first line, i don't want this. The file is long... (5 Replies)
Discussion started by: Fuziion
5 Replies

3. Shell Programming and Scripting

Inserting semicolon at the end of a line

HI Am totally confused with sed and translate command command.. My problem is I have a file like # vi test.csv ABC_IMUY ERD0_FN VEG_NON_DES_IYT BUY4_FLOW POI_SHD_URDF_IYUT_REDS_CYC UYT_PMC4_WIND EX_FRE_FRD_L2_REF_FLICT JHY_SGT_DSE_L2 IYO_HYTR_FGT_L3_BGT_ICT... (5 Replies)
Discussion started by: Priya Amaresh
5 Replies

4. UNIX for Dummies Questions & Answers

Delete a semicolon and numbers after a semicolon

I have this: ((9:0.010,(11:0.089,13:0.004)) and I would like this: ((A9,(A11,A13)) How do I delete the semi colon and the number (i.e. 0.010) after the semi colon? Also, how can I add the letter before the number that is NOT removed? Thank you in advance! ---------- Post updated... (4 Replies)
Discussion started by: MDeBiasse
4 Replies

5. Shell Programming and Scripting

Adding semicolon at the end of each line

Hi, I have a script which I need to change. I want to add a semicolon at the end of each line where the line starts with "grant" for e.g. create table(.... ); grant select on TABL1 to USER1 grant select on TABL1 to USER2should become create table(.... ); grant select on TABL1 to... (3 Replies)
Discussion started by: pparthiv
3 Replies

6. UNIX for Dummies Questions & Answers

vim copy line and paste at the beginning, middle, and end of another line

How would you do vim copy line and paste at the beginning, middle, and end of another line. I know yy copies the whole line and p pastes the whole line, but on its own separate line. Sometimes I would like to copy a line to the beginning, middle, or end of another line. I would think this would be... (3 Replies)
Discussion started by: cokedude
3 Replies

7. UNIX for Dummies Questions & Answers

How to specify beginning-of-line/end-of-line characters inside a regex range

How can I specify special meaning characters like ^ or $ inside a regex range. e.g Suppose I want to search for a string that either starts with '|' character or begins with start-of-line character. I tried the following but it does not work: sed 's/\(\)/<do something here>/g' file1 ... (3 Replies)
Discussion started by: jawsnnn
3 Replies

8. UNIX for Dummies Questions & Answers

How move characters following a semicolon to a new line

Hello, I was wondering how I can move this: ABC;>12 BLA;>67 DEF;>22 into this ABC >12 BLA >67 DEF >22 thanks for your help. (1 Reply)
Discussion started by: blakers
1 Replies

9. Shell Programming and Scripting

Replace a string after n semicolon every line

I have a file that is formatted in this way. a1;b2;c33;d4;e5;e;f;f;f;s d;ds;d;a;v;b;g;gr;r;rt;fdf s1;s2;s2;s3;s4; b1;f2;g3;h4;a3c4e;xcsd;fds; sd2;fs4;fs2;sdf3; I want to replace the value just before the 4th semicolon to empty string, regardless the value, such that it looks... (3 Replies)
Discussion started by: alienated
3 Replies

10. Shell Programming and Scripting

put a semicolon at the end of each line of a file

hi, Consider there is a file containing 200 lines. please let me know which command is to be used to put a semicolon at the end of each line. if no single command is there then how it can be achieved. (1 Reply)
Discussion started by: surjyap
1 Replies
Login or Register to Ask a Question