Solved

Append data to the end of each line in a file

Posted on 2007-11-23
16
936 Views
Last Modified: 2013-12-27
I have file called XXX

I need to appened some information to the end of each line in  file

Please provide command for that
0
Comment
Question by:sumanth_ora
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
  • 2
  • +2
16 Comments
 
LVL 40

Expert Comment

by:omarfarid
ID: 20341504
Hi,

Please try

#!/bin/sh
ed $1 << END
1,$ s/$/more data/
w
q
END

you may call the above script myshell and after you make it executable (chmod +x myshell), you may use it as:

./myshell myfile
0
 
LVL 48

Expert Comment

by:Tintin
ID: 20341962
sed "s/$/some new data/" file >file.new && mv file.new file
0
 
LVL 84

Expert Comment

by:ozo
ID: 20342326
perl -i -pe 's/$/some new data/' XXX

perl -i -lpe '$_.="some new data"' XXX

some sed implementations may also have a -i switch
0
Learn by Doing. Anytime. Anywhere.

Do you like to learn by doing?
Our labs and exercises give you the chance to do just that: Learn by performing actions on real environments.

Hands-on, scenario-based labs give you experience on real environments provided by us so you don't have to worry about breaking anything.

 
LVL 51

Expert Comment

by:ahoffmann
ID: 20343002
awk '{print $0" some new data"}' XXX
sed -e 's/.*/&" some new data"/' XXX
# just some more ...
0
 

Author Comment

by:sumanth_ora
ID: 20343325
awk '{print $0" $File_Date"}'

When I use above awk it's not picking value it's appending $File_Date to the end of each line

I want the acuval value to be append

here is the value  for $File_Date

,20071231 or |12_NOV_2007


===============================================================

sed "s/$/$File_Date/" file >file.new


I am getting message  for the above sed execution

sed garbled & makeing size of file.new as 0




0
 
LVL 40

Expert Comment

by:omarfarid
ID: 20343339
Hi,

did you try the script provided?

0
 

Author Comment

by:sumanth_ora
ID: 20343371
Instead of wring in one more script I am trying like this

 ed $OutputFilename1<< END
             1,$ s/$/$File_Date/
             w
             q
             END
             
             cat OutputFilename1 >>$OutputFilename


I got the following err

syntax error at line 406 : `<<' unmatched
0
 
LVL 40

Expert Comment

by:omarfarid
ID: 20343391
Hi,

The END should be at the beginning of the line (no space before it). Same for remaining commands 1,$ w & q

What is $File_Date ? is it an env variable defined in the script?

0
 

Author Comment

by:sumanth_ora
ID: 20343426
thats is the value i am getting dynamically
value might be ,11/22/2007 or |12_Nov_2007

Now give me example for ed using file _date
0
 
LVL 40

Expert Comment

by:omarfarid
ID: 20343444
Hi,

OK

Now the data you are inserting or appending has slashes (/) in it, which confuse ed or sed. So use the other format with (_)

Now, the example

File_Date=12_Nov_2007
export File_Date
ed $OutputFilename1<< END
1,$ s/$/$File_Date/
w
q
END
0
 

Author Comment

by:sumanth_ora
ID: 20343472
I can't change the format...
requirement is like that
0
 
LVL 40

Expert Comment

by:omarfarid
ID: 20343487
Hi,

File_Date='11\/22\/2007'
export File_Date
ed $OutputFilename1<< END
1,$ s/$/$File_Date/
w
q
END

Please note the single quotes and the back slashes
0
 

Author Comment

by:sumanth_ora
ID: 20343543
but you are providing hard coded value..
0
 
LVL 40

Accepted Solution

by:
omarfarid earned 500 total points
ID: 20343594
Hi,

Yes, but in your case you need to reformat the data, e.g. add the line below before ed command

File_Date=`echo $File_Date | awk -F"/" '{print $1 "\/" $2 "\/" $3}'`
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 20344968
> .. value might be ,11/22/2007 or |12_Nov_2007
that's the reason for the "sed garbled command", simply remove the / for sed's s by something else, i.e.
  s:$:31/11/2007:

awk '{print $0"'"$File_Date"'"}' XXX

but you accepted something else already ...
0
 
LVL 48

Expert Comment

by:Tintin
ID: 20346724
knowing the data is important.  You could have done

sed "s#\$#$File_Date#/" file >file.new && mv file.new file
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article will show, step by step, how to integrate R code into a R Sweave document
The Windows functions GetTickCount and timeGetTime retrieve the number of milliseconds since the system was started. However, the value is stored in a DWORD, which means that it wraps around to zero every 49.7 days. This article shows how to solve t…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

632 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question