Visit Our UNIX and Linux User Community


Append text to end of every line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Append text to end of every line
# 1  
Old 09-13-2011
Append text to end of every line

I've scoured the internet with mixed results. As an amateur I turn to the great minds here.

I have a text file of 80 or so lines. I want to add ".pdf" to the end of each line. (For now that's it)

Most of the internet points toward using "sed". I don't know coding but can figure things out (enough to paint myself into a corner). The closest I've gotten is:

Code:
sed 's/$/.pdf/' input

which will print within the shell:

Code:
lastlineofinput.pdf

instead of appending ".pdf" to each line within the file.

awk '{NR==1?s=$0 : s=s".pdf"$0}END{print s}' input.txt
did the same thing.

Operators are largely beyond me. I see different solutions involving different amounts of single and double quotations and I'm not sure which ones I should use.

I have had success with finding and replacing text using sed.

Code:
sed s/'text1'/'text2'/g inputfile.txt > outputfile.txt

that's a lot more than I knew before today, though admittedly more straightforward (it appears).

The closest I came was one bit of code (I forgot which now) that inserted a period to the end of the very last line. Nowhere else.

My goal is to go from this:

/02/pdf/01
/02/pdf/02
/02/pdf/03
/02/pdf/04
/02/pdf/05
/02/pdf/06

to this:
/02/pdf/01.pdf
/02/pdf/02.pdf
/02/pdf/03.pdf
/02/pdf/04.pdf
/02/pdf/05.pdf
/02/pdf/06.pdf

I'm on a Mac using Terminal so I don't know what I'm doing and appreciate any help. Thank you!
# 2  
Old 09-13-2011
Code:
awk '{ print $0 ".pdf" }' < input > output

# 3  
Old 09-13-2011
Hi,

Your 'sed' command works in my Linux box. It's an easy work for Perl too.
Code:
$ cat infile
/02/pdf/01
/02/pdf/02
/02/pdf/03
/02/pdf/04
/02/pdf/05
/02/pdf/06
$ sed 's/$/.pdf/' infile
/02/pdf/01.pdf
/02/pdf/02.pdf
/02/pdf/03.pdf
/02/pdf/04.pdf
/02/pdf/05.pdf
/02/pdf/06.pdf
$ perl -ne 'chomp; printf "%s.pdf\n", $_' infile 
/02/pdf/01.pdf
/02/pdf/02.pdf
/02/pdf/03.pdf
/02/pdf/04.pdf
/02/pdf/05.pdf
/02/pdf/06.pdf

Regards,
Birei
# 4  
Old 09-13-2011
Thank you both for the quick replies. Using:

Code:
awk '{ print $0 ".pdf" }' < input > output

and
Code:
$ perl -ne 'chomp; printf "%s.pdf\n", $_' infile

both output:
Code:
/02/pdf/06.pdf

within Terminal on my first machine.

I switched to a portable (Mac) and it output the appended .pdf after each line (an improvement) within Terminal but did not modify the original input or the new output files.

Am I missing something?
# 5  
Old 09-13-2011
Quote:
Originally Posted by spacebase
Thank you both for the quick replies. Using:

Code:
awk '{ print $0 ".pdf" }' < input > output

and
Code:
$ perl -ne 'chomp; printf "%s.pdf\n", $_' infile

both output:
Code:
/02/pdf/06.pdf

Is that not what you asked for? Smilie

In any case you can't have typed this literally:
Code:
awk '{ print $0 ".pdf" }' < input > output

...because the highlighted part redirects its output into the 'output' file, not the terminal.

awk, and most other utilities, can't read from and write to the same file at the same time. If you want to do that, overwrite the original file with the new one, once you've checked the data is still okay.

'sed -i' can edit files "in place", but is only available in Linux, can have the unfortunate side-effect of changing the ownership of the file, and -- as noted above -- if you make a mistake with it, you've wrecked your original data.

Previous Thread | Next Thread
Test Your Knowledge in Computers #857
Difficulty: Easy
React cannot be used as a base in the development of single-page web or mobile applications.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Append Pipes at the end of each line

Hi , I have pipe delimited file containing 12 columns having below data in AIX Input : A|B|C|D|E|F|G|H|I|J|K|L^M A1|B1|C1|D1|E1^M A2|B2|C2^M So in first row i have 11 pipes which is fine. In second row I have 4 pipes, so additional 7 pipes should get append In third row I have 2... (3 Replies)
Discussion started by: sonu_pal
3 Replies

2. Shell Programming and Scripting

sed - Find a String and append a text end of the Line

Hi, I have a File, which have multiple rows. Like below 123456 Test1 FNAME JRW#$% PB MO Approver XXXXXX. YYYY 123457 Test2 FNAME JRW#$% PB MO Super XXXXXX. YYYY 123458 Test3 FNAME JRW#$% PB MO Approver XXXXXX. YYYY I want to search a line which contains PB MO Approver and append... (2 Replies)
Discussion started by: java2006
2 Replies

3. Shell Programming and Scripting

Append text to line if begins with pattern1 AND does not end with pattern2

Hello, I'm looking for sed solution to change ... <li>keyword</li> <li>keyword <li>keyword</li> <li>keyword <li>keyword</li> ... to ... <li>keyword</li> <li>keyword</li> <li>keyword</li> <li>keyword</li> <li>keyword</li> ... I.e., if lines beginning with <li> do not end with... (3 Replies)
Discussion started by: pioavi
3 Replies

4. Shell Programming and Scripting

find a certain line and append text to the end of the line

After I create printer queues in AIX, I have to append a filter file location within that printers custom file. within lets say test_queue.txt I need to find the row that starts with :699 and then I need to append on the end the string /usr/local/bin/k_portrait.sh. Now I've gotten the sed... (2 Replies)
Discussion started by: peachclift
2 Replies

5. Shell Programming and Scripting

append text from file1 to the end of each line in file2

hi; my file2.txt:portname=1;list=10.11;l- portname=2;list=10.12;l- portname=3;list=10.13;l- ... my file1.txt:;"{'sector=%27'}"\&> so; i want to see:portname=1;list=10.11;l-;"{'sector=%27'}"\&> portname=2;list=10.12;l-;"{'sector=%27'}"\&> portname=3;list=10.13;l-;"{'sector=%27'}"\&>... (4 Replies)
Discussion started by: gc_sw
4 Replies

6. Shell Programming and Scripting

Append text to end of line on all lines

Hi, I've spent some time researching for this but can't seem to find a solution. I have a file like this 1234|Test|20101111|18:00|19:00There will be multiple lines in the file with the same kind of format. For every line I need to make it this 1234|Test|20101111|18:00|19:00||create... (5 Replies)
Discussion started by: giles.cardew
5 Replies

7. UNIX for Dummies Questions & Answers

Append characters to end of line

Coding in unix shell script. Hi All, Please help Thanks (6 Replies)
Discussion started by: sam12345
6 Replies

8. Shell Programming and Scripting

append some text message at the end of the file

Hi All, Please tell me how to append some text message at the end of the file. "File too large to view" example: xyz.log contains hhhhhhhhhhh hhhhhhjjjjjjjjj jjjjjjjjjjjjjjjjjjjjjj "File too large to view" Please advice (3 Replies)
Discussion started by: rajeshorpu
3 Replies

9. Shell Programming and Scripting

Append text at end of the first line in a file

Hi I need to append some text @ end of the first line in a file. like myfile.txt list = a,b,c list.a=some.. I give the arg "d" . now it append at end of first line list=a,b,c,d list.a=some... Please help me out this (7 Replies)
Discussion started by: catgovind
7 Replies

10. UNIX for Dummies Questions & Answers

using sed to append text to the end of each line

Anyone know how to use SED to append a comma to the end of each line example: field1,field2,field3,field4 If i Cat /textfile ---- How can i append the end of /textfile with a comman? (8 Replies)
Discussion started by: Redg
8 Replies

Featured Tech Videos