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


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Adding tab/new line at the end of each line of a file
# 1  
Old 08-14-2012
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 script that I have written append almost all char but I am facing a problem with appending \t or \n when using the variable concept. However, if I hardcode \t and \n in the scripts , its working fine.

The sample file (TESTDATA.txt) that I have created is as shown below :
Code:
137798|Sourav_Das|100
127798|S_Das|101
117798|S.Das|1

and the script (SampleScript.sh) that I am using
Code:
#!/bin/ksh
#================================#
# Script to change the # 
# delimiter of any file and #
# also zip the file #
#================================#
NOW=`date '+%Y%m%d%H%M'`
NOW_DATE=`date '+%Y%m%d'`
RSUFFIX=$1
echo "==============================="
echo "$NOW"
echo "$RSUFFIX"
echo "===================="
rm TEMP1.txt
rm TEMP2.txt
touch TEMP1.txt
touch TEMP2.txt
echo "$RSUFFIX" 
##======== This doesn't work =============================
awk '{print $0 "$RSUFFIX"}' TESTDATA.txt > TEMP1.txt
##======== This works =============================
awk '{print $0 "\t\t"}' TESTDATA.txt > TEMP2.txt


The Comand line arguments for appending TAB is :
Code:
$ ./SampleScript.sh '\\t'

Can anyone of you please help me resolving this issue ?

Thanks in advance..
Sourav

Last edited by Franklin52; 08-15-2012 at 04:18 AM.. Reason: Please use code tags for data and code samples
# 2  
Old 08-14-2012
you dont put shell variables inside of awk programs, at least not like that. they're different and separate things. you can pass variables to awk like this: awk -v "rsuffix=$RSUFFIX" and then use it as rsuffix.
# 3  
Old 08-15-2012
Thanks for the reply... I tried assigning the shell variable to an awk variable and used the same in the awk command but this didn't work.\

I used
Code:
nawk -v rsuffix=$RSUFFIX 'BEGIN { print rsuffix }'

and then
Code:
awk '{print $0 rsuffix}' TESTDATA.txt > TEMP1.txt


Last edited by Franklin52; 08-15-2012 at 04:18 AM.. Reason: Please use code tags for data and code samples
# 4  
Old 08-15-2012
What output did you get? Also, quote your expansions, "$RSUFFIX".
# 5  
Old 08-15-2012
Thanks for your reply ..
Eventhough I used "$RSUFFIX" , I am not seeing any change in my output i.e. no char are appended to the last line of each record.

Below is my current code and I am executing the following , from the command line ( ./SampleScript.sh '\\t' )

SampleScript.sh ->
Code:
#!/bin/ksh
#================================#
# Script to change the #
# delimiter of any file and #
# also zip the file #
#================================#
NOW=`date '+%Y%m%d%H%M'`
NOW_DATE=`date '+%Y%m%d'`
RSUFFIX=$1
echo "==============================="
echo "$NOW"
echo "$RSUFFIX"
echo "===================="
rm TEMP1.txt
rm TEMP2.txt
touch TEMP1.txt
touch TEMP2.txt
echo "$RSUFFIX"
nawk -v rsuffix="$RSUFFIX" 'BEGIN { print rsuffix }'
##======== This doesn't work =============================
 awk '{print $0 rsuffix}' TESTDATA.txt > TEMP1.txt
##======== This works =============================
 awk '{print $0 "\t\t"}' TESTDATA.txt > TEMP2.txt

My expected Result is
Code:
137798|Sourav_Das|100<one tab>     
127798|S_Das|101<one tab>
117798|S.Das|1<one tab>


Last edited by Franklin52; 08-15-2012 at 09:55 AM.. Reason: Please use code tags for data and code samples
# 6  
Old 08-15-2012
The technique should work fine.
Code:
x='\t'
awk -v x="$x" 'BEGIN { printf "%s", x }' | od -c
0000000  \t
0000001

Also, if you are already single-quoting, there's no need to double the backslash. Doing so yields two characters, a literal backslash followed by the letter tee, instead of the escape sequence that produces a single tab character.
Code:
x='\\t'
awk -v x="$x" 'BEGIN { printf "%s", x }' | od -c
0000000   \   t
0000002

Regards,
Alister

Last edited by alister; 08-15-2012 at 09:53 AM..
# 7  
Old 08-15-2012
Alister,
Thanks for your reply but I am unable to correlate your solution with my requirement.. Can you please explain as how I will incorporate your solution to my requirement?

Regards,
Sourav
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Adding comma to end of each line if more than 1 line

I have a file with dates as '2013-01-01' '2013-01-02' I want the output to be '2013-01-01','2013-01-02' if there is only 1 entry then there should not be any comma. (6 Replies)
Discussion started by: ATWC
6 Replies

2. 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

3. 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

4. Shell Programming and Scripting

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... (4 Replies)
Discussion started by: edstevens
4 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 characters end of line where line begins with..

Hi all, using VI, can anyone tell me how to add some characters onto the end of a line where the line begins with certain charactars eg a,b,c,......., r,s,t,........, a,b,c,......., all lines in the above example starting with a,b,c, I want to add an x at the end of the line so the... (6 Replies)
Discussion started by: satnamx
6 Replies

7. 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

8. 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

9. 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

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