Awk/Sed - appending within file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Awk/Sed - appending within file
# 8  
Old 03-21-2011
try sed+awk:

Code:
sed -i "1s/.*/&`awk 'BEGIN {clientlist = "";FS=":"} /client/&&NR>1 { clientlist = clientlist $2 }END { print clientlist"]"}' file`/" file

# 9  
Old 03-22-2011
Thanks again. That worked from the command line when I added some empty single quotes after the -i. However, I'd like it to be executable from within a bash script, as it will be one stage in a longer conversion process. With sed scripts, I can reference the filename (passed in from cmd line) as $1, but I don't think that works with awk, as the $n syntax references fields. Is there an alternate way of referring to the filename?

I have some other questions about the syntax, for my own understanding:

Code:
"1s/.*/&`awk '...'

...I assume here the & is acting as a concatenate operator, so this is saying "add the results of the following awk script to line 1 (1s) after all the existing characters (.*)" ?

Code:
/client/&&NR>1

match when text 'client' appears AND line number > 1 ?

Code:
`awk '...' file`/

...here my question is whether the ` quotes are the standard notation for delimiting an awk script that is feeding a sed script, or are they used because ' and " are already used elsewhere in the script? Or is it like with regex, where any character could be used to delimit, so long as it matches at both ends?

Also, what does the / at the end denote?

Thanks again for all your help, I am learning alot
# 10  
Old 03-22-2011
You can also have a look at this link
This User Gave Thanks to ctsgnb For This Post:
# 11  
Old 03-22-2011
Quote:
Originally Posted by singerfc
Is there an alternate way of referring to the filename
Found it, I just needed to add

filename="$1"

at the top of my bash script, then refer to $filename thereafter.

thanks again yinyuemi, and thanks for the link ctsgnb - that helped with some substr/length stuff I needed to do.
# 12  
Old 03-22-2011
And this one is just in case you want to play with sed
# 13  
Old 03-22-2011
OK, the saga continues. I am nearly done, but have this structure left, e.g.:

Code:
"one":"field one",
"two":"field two",
"three":"
field three line 1

field three line 2

field three line 3
"

and I need to replace the line breaks in that last field with text '\n'. However when I use awk to access $s of line '/three/', I just get '"'.

I don't want to just replace all line breaks with '\n' in the file, because the ones at the end of lines one and two are not harming the input, whereas the ones in field three are (I'm trying to json_decode in PHP).

How would I go about achieving this?
# 14  
Old 03-22-2011
how about this?
Code:
awk '/\"/&&$0!~/,/{++p}{printf (p%2?$0" ":$0"\n")}' file
 
"one":"field one",
"two":"field two",
"three":"field three line 1 field three line 2 field three line 3"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Reading and appending a row from file1 to file2 using awk or sed

Hi, I wanted to add each row of file2.txt to entire length of file1.txt given the sample data below and save it as new file. Any idea how to efficiently do it. Thank you for any help. input file file1.txt file2.txt 140 30 200006 141 32 140 32 200006 142 33 140 35 200006 142... (5 Replies)
Discussion started by: ida1215
5 Replies

2. UNIX for Dummies Questions & Answers

Appending columns at the end of output using awk/sed

Hi , I have the below ouput, =====gopi===== assasassaa adsadsadsdsada asdsadsadasdsa sadasdsadsd =====kannan=== asdasdasd sadasddsaasd adasdd =====hbk=== asasasssa .... .. I want the output like as below, not able paste here correctly. (2 Replies)
Discussion started by: eeegopikannan
2 Replies

3. Shell Programming and Scripting

Appending string (charachters inside the line) to a fixed width file using awk or sed

Source File: abcdefghijklmnop01qrstuvwxyz abcdefghijklmnop02qrstuvwxyz abcdefghijklmnop03qrstuvwxyz abcdefghijklmnop04qrstuvwxyz abcdefghijklmnop05qrstuvwxyz Whatever characters are in 17-18 on each line of the file, it should be concatenated to the same line at the character number... (6 Replies)
Discussion started by: tamahomekarasu
6 Replies

4. Shell Programming and Scripting

awk;sed appending line to previous line....

I know this has been asked before but I just can't parse the syntax as explained. I have a set of files that has user information spread out over two lines that I wish to merge into one: User1NameLast User1NameFirst User1Address E-Mail:User1email User2NameLast User2NameFirst User2Address... (11 Replies)
Discussion started by: walkerwheeler
11 Replies

5. Shell Programming and Scripting

appending a file using sed in ksh

i am trying to append a 5 line SGML file(file1) with a 500,000 line SGML file (file2). file1 is a template, so i wish to preserve. i only want to add lines 5 to the end of file2. i have: cp file1 temp1 sed -n '5,$p' file2 >> temp1 when i check the tail of temp1, i consistantly find the... (3 Replies)
Discussion started by: smac
3 Replies

6. UNIX for Dummies Questions & Answers

SED or AWK: Appending a line Identifier that changes with paragraph?

Have another question that has been eluding me all day. I have data file I'm trying to reformat so that each line is appended with an ID code, but the ID code needs to update as it searches through the file. I.e. ----Begin Original Datafile----- Condition = XXX Header Line 1 Header... (1 Reply)
Discussion started by: selkirk
1 Replies

7. Shell Programming and Scripting

appending and sed

Hello, I want to add string #REAL at the end of all lines that contain real numbers. How to do this using sed ? (1 Reply)
Discussion started by: scotty_123
1 Replies

8. Shell Programming and Scripting

appending to sed output of one file into the middle of file

hi, i have a file file1 file2 ----------- ----------------- aa bbb ccc 111 1111 1111 ddd eee fff 222 3333 4444 ggg hhh... (5 Replies)
Discussion started by: go4desperado
5 Replies

9. Shell Programming and Scripting

Appending string to xml file using "sed"

Hi folks, Following a section in opmn.xml file: </process-type> <process-type id="OC4J_RiGHTv_IRD1" module-id="OC4J"> <environment> <variable id="LD_LIBRARY_PATH" value="/home/ias/v10.1.2/lib" append="true"/> <variable id="SHLIB_PATH"... (2 Replies)
Discussion started by: nir_s
2 Replies

10. UNIX for Dummies Questions & Answers

SED Question -- on appending to a file

:confused: I have a script that Cats a flat database file which contains 12 columns into sed. I want to add a 13th column which includes " ,2005-08-29 " * The date needs to be the current date. This 13th column would be appended to the end of each line. Does anyone have a clue... (5 Replies)
Discussion started by: Redg
5 Replies
Login or Register to Ask a Question