adding line number to *end* of records in file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting adding line number to *end* of records in file
# 1  
Old 07-13-2012
adding line number to *end* of records in file

Given a file like this:

abc
def
ghi

I need to get to

somestandardtext abc1 morestandardtext
somestandardtext def2 morestandardtext
somestandardtext ghi3 morestandardtext

Notice that in addition to the standard text there is the line number added in as well. What I conceived is one sed command to add the 'somestandardtext' (easy to do), then a second one to add the line number, then a third to add 'morestandardtext'.

Lot's of examples on about adding the number to the beginning, but I can't seem to work out how to add it to the end

As always, if there is a better approach, I'm all eyes .. perhaps referencing an sed script file instead of inline commands?
# 2  
Old 07-13-2012
What about using awk in this case?
Code:
awk '{ print "somestandardtext", $0 NR, "morestandardtext" }' inputfile >outputfile

---------- Post updated at 21:33 ---------- Previous update was at 21:25 ----------

And if you want to use sed, try
Code:
sed -n 'p;=' inputfile | sed 'N;s/\n//; s/^/somestandardtext /; s/$/ morestandardtext/'

# 3  
Old 07-13-2012
Both very close.

Quote:
Originally Posted by hergp
What about using awk in this case?
Code:
awk '{ print "somestandardtext", $0 NR, "morestandardtext" }' inputfile >outputfile

---------- Post updated at 21:33 ---------- Previous update was at 21:25 ----------

And if you want to use sed, try
Code:
sed -n 'p;=' inputfile | sed 'N;s/\n//; s/^/somestandardtext /; s/$/ morestandardtext/'

The awk solution gives me everything I need, except it is inserting an unwanted space where we break between quoted text and field references.

the sed solution eliminates the space problem (as well as not having to escape a bunch of quotes in the standard text), but my example was a bit more simple than reality, and I'm not bridging the gap.

Let's say I start with file myfile.txt

abc
def
ghi

I need to get
SOMECANNEDTEXTabcSOMEMORETEXT1STILLMORETEXT
SOMECANNEDTEXTdefSOMEMORETEXT2STILLMORETEXT
SOMECANNEDTEXTghiSOMEMORETEXT3STILLMORETEXT

Note that the line number is appended at the end of SOMEMORETEXT

I appreciate the help. I'm learning a lot here but still having trouble getting my head wrapped around some of it.
# 4  
Old 07-13-2012
To get rid of the blank, replace a comma with a blank in the awk-command. NR is a special variable which holds the current line number, as you may have guessed.

Code:
awk '{ print "SOMECANNEDTEXT" $0 "SOMEMORETEXT" NR "STILLMORETEXT" }' inputfile >outputfile

With sed you have to mix up the components a little bit:

Code:
sed -n 's/^/SMOECANNEDTEXT/; s/$/SOMEMORETEXT/; p; =' inputfile| sed 'N; s/\n//; s/$/STILLMORETEXT/'

Hope, this helps.
This User Gave Thanks to hergp For This Post:
# 5  
Old 07-13-2012
Quote:
Originally Posted by hergp
To get rid of the blank, replace a comma with a blank in the awk-command. NR is a special variable which holds the current line number, as you may have guessed.

Code:
awk '{ print "SOMECANNEDTEXT" $0 "SOMEMORETEXT" NR "STILLMORETEXT" }' inputfile >outputfile

With sed you have to mix up the components a little bit:

Code:
sed -n 's/^/SMOECANNEDTEXT/; s/$/SOMEMORETEXT/; p; =' inputfile| sed 'N; s/\n//; s/$/STILLMORETEXT/'

Hope, this helps.
Both achieve exactly what I need. thank you so much.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help on Adding one counter loop at the end of each line in a file

Hello All, I have file a.txt I want to add a counter loop at the end of each line in a file ill explain: i have a site h**p://test.test=Elite#1 i want to add a a counter to the number at the end of the file, that it will be like this urlLink//test.test=Elite#1 urlLink//test.test=Elite#2... (3 Replies)
Discussion started by: nexsus
3 Replies

2. Shell Programming and Scripting

Adding text to the end of the specific line in a file(only to the first occurrence of it)

Hi, I want to add a text to the end of the specific line in a file. Now my file looks like this: 999 111 222 333 111 444 I want to add the string " 555" to the end of the first line contaning 111. Moreover, I want to insert a newline after this line containg the "000" string. The... (8 Replies)
Discussion started by: wenclu
8 Replies

3. Shell Programming and Scripting

Adding tab/new line at the end of each line of a file

Hello Everyone, I need a help from experts of this community regarding one of the issue that I am facing with shell scripting. My requirement is to append char's at the end of each line of a file. The char that will be appended is variable and will be passed through command line. The... (20 Replies)
Discussion started by: Sourav Das
20 Replies

4. Shell Programming and Scripting

AWK-grep from line number to the end of file

Does anyone know how to use awk to act like grep from a particular line number to the end of file? I am using Solaris 10 and I don't have any GNU products installed. Say I want to print all occurrences of red starting at line 3 to the end of file. EXAMPLE FILE: red green red red... (1 Reply)
Discussion started by: thibodc
1 Replies

5. Shell Programming and Scripting

help with sed adding line to end of file

sed '$a\ hello' books hi i am trying to use sed to append hello to the end of the file books, but for some reason i can't get it work. It keeps sayin command garbled. Anyone know what I'm doing wrong. this is in a ksh script as well. (3 Replies)
Discussion started by: bjhum33
3 Replies

6. Shell Programming and Scripting

Adding multiple line at the end of the file

I have 2 files which contains the following lines file1.txt line4 line5 line6 file2.txt line1 line2 line3 When i execute a script , I want my file2.txt will looks like this: line1 line2 line3 line4 line5 (2 Replies)
Discussion started by: kaibiganmi
2 Replies

7. Shell Programming and Scripting

Adding new line at the end of file

Hi I have few files. For some files the cursor is at the end of last line. For other files, cursor is at the new line at the end. I want to bring the cursor down to next line for the files that are having cursor at the end of last line In otherwords, I want to introduce a blank line at the... (5 Replies)
Discussion started by: somesh_p
5 Replies

8. Shell Programming and Scripting

Grabing Date from filename and adding to the end of each line in the file.

Hi, I have 24 .dat files something like below. The file name starts with “abc” followed by two digit month and two digit year. Is there a way to grab the month and year from each filename and append it to the end of each line. Once this is done I want to combine all the files into file... (1 Reply)
Discussion started by: rkumar28
1 Replies

9. Shell Programming and Scripting

Select matches between line number and end of file?

Hi Guys/Gals, I have a log file that is updated once every few seconds and I am looking for a way to speed up one of my scripts. Basically what I am trying to do is grep through a text file from start to finish once. Then each subsequent grep starts at the last line of the previous grep to... (4 Replies)
Discussion started by: Jerrad
4 Replies

10. Shell Programming and Scripting

adding text to end of each line in a file

I'm needing to add a "hour:min" to the end of each line in a document. The document in this case is only going to be one line. if this inserts it at the end, what needs to be changed to add something at the end... /bin/echo "%s/^/$filler/g\nwq!" | ex -s $oFile Thank you... (2 Replies)
Discussion started by: cubs0729
2 Replies
Login or Register to Ask a Question