File deliminated with | character - How do I change 1 value


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting File deliminated with | character - How do I change 1 value
# 1  
Old 12-05-2009
File deliminated with | character - How do I change 1 value

Hi All, I'm struggling with a problem.

Data file example:

Brown|32 inches|apple|monkey
Green|12 feet|grape|cat
Blue|32 inches|banana|dog
Black|23 inches|pear|horse

I need to change the value '32 inches' in the third line, and only the third line, while keeping the rest of the file the same.

I can isolate the attribute needing attention, but I can not figure out a way to make the change.

Here is what I have (and isn't working)
Code:
sed -n "/$user_input/p" myfile.txt | awk -F"|" '{print $5}' | sed "s/$old/$new/g" -i myfile.txt

However, that code replaces all instances of $old within the file.

Any and all help would be appreciated.

Thanks
# 2  
Old 12-05-2009
hello.
if you have to change only one value in only one line. then why dont you fire up a vi/vim/nano editor and do it manually.
no issues.
# 3  
Old 12-05-2009
Quote:
Originally Posted by gaurav1086
hello.
if you have to change only one value in only one line. then why dont you fire up a vi/vim/nano editor and do it manually.
no issues.
Haha... if only it were that easy.

It's being used in a script, so the user's input will determine the new value.

Thanks though.
# 4  
Old 12-05-2009
Code:
$
$ cat -n f3
     1  Brown|32 inches|apple|monkey
     2  Green|12 feet|grape|cat
     3  Blue|32 inches|banana|dog
     4  Black|23 inches|pear|horse
$
$
$ old_value="32 inches"
$ new_value="FIGHT_CLUB"
$ line_num=3
$
$ perl -i.bak -pe "$.==$line_num && s/$old_value/$new_value/" f3
$
$ cat -n f3
     1  Brown|32 inches|apple|monkey
     2  Green|12 feet|grape|cat
     3  Blue|FIGHT_CLUB|banana|dog
     4  Black|23 inches|pear|horse
$
$

tyler_durden
# 5  
Old 12-05-2009
hi..
the way you phrased your problem sounded like the one I observed. Anyways the simple solution to your problem is remove the 'g' switch from the sed one-liner and I'm sure it would work fine.
So it goes like this.
sed -n "/$user_input/p" myfile.txt | awk -F"|" '{print $5}' | sed "s/$old/$new/" -i myfile.txt
though I must say . its a horrible way to write a one liner sed->awk->sed... wow awesome...
anyways.. good luck.. Smilie
# 6  
Old 12-05-2009
This works:
Code:
$ cat sed.dat
Brown|32 inches|apple|monkey
Green|12 feet|grape|cat
Blue|32 inches|banana|dog
Black|23 inches|pear|horse

Code:
$ sed '3s/32 inches/new user value/' sed.dat
Brown|32 inches|apple|monkey
Green|12 feet|grape|cat
Blue|new user value|banana|dog
Black|23 inches|pear|horse

# 7  
Old 12-05-2009
Code:
$
$ awk -v LNUM=3 -v OLD="32 inches" -v NEW="NEW VALUE" '{NR==LNUM && sub(OLD,NEW,$0); print}' f3
Brown|32 inches|apple|monkey
Green|12 feet|grape|cat
Blue|NEW VALUE|banana|dog
Black|23 inches|pear|horse
$

tyler_durden
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Change the i-th character of the j-th line

Hi, I have a file like #----------------------------------- 3 ! number of parameters of the polynome 0.00000e+00 0 ! fix=0) free=1 1.03916e-03 1 ! fix=0) free=1 0.00000e+00 0 ! fix=0) free=1 3 ! number of parameters 2.16595e-05 0 ! fix=0)... (5 Replies)
Discussion started by: f_o_555
5 Replies

2. Linux

Parse ; deliminated variable to create variables

Hi there, would appreciate some help on this parsing problem if anybody can help im trying to parse a variable with the following output, each of the values im trying to parse are deliminated by a ; T192... (8 Replies)
Discussion started by: scottish_jason
8 Replies

3. Shell Programming and Scripting

Change last Character

Hi, Someone can help me please, i have text in file like this: (a,b,c,d,e), (f,g,h,i,j), (k,l,m,n,o), and i want to change the last character to like this: (a,b,c,d,e), (f,g,h,i,j), (k,l,m,n,o); last array character "," i want change to ";" anyone can help me please,, thanks (2 Replies)
Discussion started by: ryo
2 Replies

4. Shell Programming and Scripting

Reverse a change of character

Good morning, i have two chaines of characters to be reversed in shell script (red with blue). It was only one line. Can you help me to write a script in awk or sed? ... (2 Replies)
Discussion started by: khalidou13
2 Replies

5. Solaris

help me to change the character set

dears i am using solaris 10 i am facing a problem when i make setup for solaris i choose the country egypt and i select the language north america but i forget to do that the i found the date Jun written in arabic i want to change character set to written in english -rw-r--r-- 1 root ... (4 Replies)
Discussion started by: hosney00ux
4 Replies

6. Shell Programming and Scripting

How to change a specific character in a file

Hi, I have a data file with following structure: a|b|c|d|3|f1|f2|f3 a|b|c|d|5|f1|f2|f3|f4|f5 I want to change this data to: a|b|c|d|3|f1;f2;f3 a|b|c|d|5|f1;f2;f3;f4;f5 Data in column 5 tells the number of following fields. All fields delimiter after the 5th column needs to be... (6 Replies)
Discussion started by: sdubey
6 Replies

7. Shell Programming and Scripting

how to change every 3rd character

hey champs, i have a files, whose contents are as follows, abcdefghijk lmnopqrstuv .............. .............. i want to replace every other 3rd character to some specified character. let here in this file i want to replace each 3rd character to z. abzdezghzjk lmzopzrszuv... (2 Replies)
Discussion started by: manas_ranjan
2 Replies

8. UNIX for Dummies Questions & Answers

convert file deliminated by colon to one deliminated by tab characters

I know this seems simple to some of you so could you help? example> file:Mine and yours :daily need this deliminated to tab characters (2 Replies)
Discussion started by: yammer
2 Replies

9. Shell Programming and Scripting

replace character in a string pattern and save the change in same file

I am facing one problem, can any one please suggest me the command for the same in unix. I am using Ksh. I have a large file with the data that looks like below. "ROTO2-2007f","_US01","9/15/2007","9/21/2007",346492,"NICK, LCD WATCH"97,1,"NAPOLITJ ","BERGER,M Z & CO INC",0.01, ... (2 Replies)
Discussion started by: mihir0011
2 Replies

10. UNIX for Dummies Questions & Answers

change character case

i need to change character case inside a script file. How i can do that? any fucntion? thanks (3 Replies)
Discussion started by: ajaya
3 Replies
Login or Register to Ask a Question