Add a column at the end of all the lines in a file


 
Thread Tools Search this Thread
Operating Systems HP-UX Add a column at the end of all the lines in a file
# 1  
Old 01-18-2006
Add a column at the end of all the lines in a file

Hi Guys, Smilie

I am very much new to UNIX. I dont have much basics of coding in UNIX, so please help me out of thi ssituation.

I have a file say for ex: ABC.dtd and it contains "|" delimited data as

test1|testing|test3|moving
past1|runing|test4|going

I need to add a column at the end of each line as shown below.

test1|testing|test3|moving|D
past1|runing|test4|going|D

for this purpose I am using the command :searches the end of the line i.e "$" and then replaces with "D".

%s/$/D/g

The problem is before the search begins, first I need to implement a function that picks up the file from the specified location and performs search and replace and pushes back thhe file to the original location.
This overall function I need to implement in a ksh script.

Could you please help me out of this?????????

Thanks in advance.

ruthless
Smilie
# 2  
Old 01-18-2006
Do you have a fixed location where you will take the file for modification,

Below is an example, which takes the file name with full path as the command line argument and modify that file.

You can modify the script, to call the function to know the file name...

Code:
#!/bin/ksh
sed 's/^\(.*\)$/&\\D/' $1 > $1_temp
mv "$1_temp" "$1"

Note: This is not tested.
# 3  
Old 01-19-2006
try
perl -pi -e "s/$/|D/g" yourfilename

in this case the -i flag of perl actually overwrites the same file, there is no involment of creating a temp file and moving it back to the same name again
# 4  
Old 01-19-2006
Hi Guys

Thank you very much for helping me.

Mona[COLOR=Blue] , I have couple of questions for you . When I append "|D" at the end of the line, does it replaces the "$" which is the end of the line or just appends without affecting the "$" the end of the line indicator.
for ex:
incoming file:
a|S|D|F|G

output
a|S|D|F|G|D$

Does it works this way? I dont knw whether its a relevant question ro not. Please Please dont mind if its not!!!!!!!!!!

But do tell me how it works.

secondly, the location of the files is fixed, then how do I incorporate(define) the location of the file in the script?

Thanks a lot.
# 5  
Old 01-20-2006
Quote:
Originally Posted by ruthless
Thank you very much for helping me.

Mona[COLOR=Blue] , I have couple of questions for you . When I append "|D" at the end of the line, does it replaces the "$" which is the end of the line or just appends without affecting the "$" the end of the line indicator.
for ex:
incoming file:
a|S|D|F|G

output
a|S|D|F|G|D$

Does it works this way? I dont knw whether its a relevant question ro not. Please Please dont mind if its not!!!!!!!!!!

But do tell me how it works.

secondly, the location of the files is fixed, then how do I incorporate(define) the location of the file in the script?

Thanks a lot.
Hi,

1. It will append \D without affecting the end of line character $. See the below example.

Code:
/export/home/test/mons>cat -vet samp
test1|testing|test3|moving$
past1|runing|test4|going$
/export/home/test/mons>sed 's/^\(.*\)$/&\\D/' samp | cat -vet
test1|testing|test3|moving\D$
past1|runing|test4|going\D$

If you see the regular expression in the sed you can understand better.

s/^\(.*\)$/&\\D/ - Takes the entire line and append \D in the last.

2. If the location of the file is fixed then write a script to get the file name as a command line argument. Create a variable which contains the path(which u can hardcode) and the file name passed.

see an example below

Code:
#!/bin/ksh
file="/export/home/test/mons/"$1
sed 's/^\(.*\)$/&\\D/' $file > $file_temp
mv "$file_temp" "$file"

Note: Not tested
# 6  
Old 01-20-2006
Hi Mona,

The exact script what I tested is
#!/bin/ksh
$file="/A/B/C/D/E/"mat.dtd
sed 's/^\(.*\)$/&\|D/' mat.dtd > $file_temp
mv "$file_temp" "xdm.dtd"

and the output I am getting is(as on the screen)

./test1.ksh[2]: =/A/B/C/D/E/mat.dtd: not found
a|b|s|C|r|q|r|D
b|s|r|e|o|s|k|D
p|i|e|w|m|e|t|D
1|2|3|4|5|6|g|D
Z|Q|R|T|S|L|j|D
1|d|x|a|p|y|m|D
mv: : cannot access: No such file or directory

When I am using ur first solution ,its works fine, but for that I need to work in the same shell.
For the above code,it is not able to access the source file(mat.dtd) from the location mentioned.It is taking the contents of the file only becos I am running code in the same dir and also not able to move back to the original file.

Could u pls find the mistake I am doing???

Thanks again.
# 7  
Old 01-20-2006
Hi,

Actually I did mistake while posting the code I was using. This is the code I am using. Only diff is there's no $ sign before "file".


#!/bin/ksh
file="/A/B/C/D/E/"mat.dtd
sed 's/^\(.*\)$/&\|D/' mat.dtd > $file_temp
mv "$file_temp" "mat.dtd"

Best regards,
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Search a file for certain strings and add them to the end of certain lines

I have a log file which lists groups and users in the following format GROUP1 user1 user2 user3 GROUP2 user4 user5 user6 GROUP3 user7 user8 I need to change the format to: user1|GROUP1 user2|GROUP1 user3|GROUP1 user4|GROUP2 (3 Replies)
Discussion started by: Angela S
3 Replies

2. Shell Programming and Scripting

Add column to end of each line with ´awk´

Hi, I have data with approximately 300 columns. I want to add a column to the end of each column with the value "1". Is there a way that I can do this is ´awk´ without having to specify each individual column. For instance, my data looks like: pvb 1 2 3 4 5 ....... 300 fdh 3 4 5 2 4 ......... (4 Replies)
Discussion started by: owwow14
4 Replies

3. UNIX for Dummies Questions & Answers

Add strings from one file at the end of specific lines in text file

Hello All, this is my first post so I don't know if I am doing this right. I would like to append entries from a series of strings (contained in a text file) consecutively at the end of specifically labeled lines in another file. As an example: - the file that contains the values to be... (3 Replies)
Discussion started by: gus74
3 Replies

4. Shell Programming and Scripting

Put the lines from file A to end of lines in file B

I really can't figure this one out. I have 2 files, one file is a list of hostnames and the other is a list of their corresponding IPs: fileA: example.com another.org thirdie.net fileB: 1.1.1.1 2.2.2.2 3.3.3.3 I want to create a fileC that looks like: example.com 1.1.1.1... (2 Replies)
Discussion started by: zstar
2 Replies

5. Shell Programming and Scripting

Script to add backslashes to end of certain lines of text

I'd like to write up notes in a relatively readable format and then use a shell script to add LaTeX formatting. Specifically, I'm trying to figure out how to add the LaTeX newline character (\\) to the end of lines without \begin{} or \end{} statements example notes file: \begin{enumerate} --... (2 Replies)
Discussion started by: icskittles
2 Replies

6. Shell Programming and Scripting

Remove lines that match string at end of column

I have this: 301205 0000030000041.49000000.00 2011111815505 908 301205 0000020000029.10000000.00 2011111815505 962 301205 0000010000027.56000000.00 2011111815505 3083 312291 ... (2 Replies)
Discussion started by: herot
2 Replies

7. Shell Programming and Scripting

Select lines in which column have value greater than some percent of total file lines

i have a file in following format 1 32 3 4 6 4 4 45 1 45 4 61 54 66 4 5 65 51 56 65 1 12 32 85 now here the total number of lines are 8(they vary each time) Now i want to select only those lines in which the values... (6 Replies)
Discussion started by: vaibhavkorde
6 Replies

8. Shell Programming and Scripting

deleting the lines at the end of the file.

I have a text file with two coulmn first column is just used in to show the line number, these line number are not there in the real file. I want to delete the line 16(in this file) here, even tough there is no data inside it . this empty line is causing me a problem by throwing me garbage... (12 Replies)
Discussion started by: shashi792
12 Replies

9. Shell Programming and Scripting

Add end of char \n on end of file

Hi, I want to add \n as a EOF at the end of file if it does't exist in a single command. How to do this? when I use command echo "1\n" > a.txt and od -c a.txt 0000000 1 \n \n 0000003 How does it differentiate \n and eof in this case? Regards, Venkat (1 Reply)
Discussion started by: svenkatareddy
1 Replies

10. Shell Programming and Scripting

Blank Lines - End of file

Hi all I need to strip blank lines from the end of a file. I have searched and found topics on how to strip lines from the entirety of a file - however I need to limit this to only the last 3-4 lines. Any ideas? Thanks (4 Replies)
Discussion started by: saabir
4 Replies
Login or Register to Ask a Question