Problem/help with Sed


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Problem/help with Sed
# 1  
Old 07-20-2008
Problem/help with Sed

Hi,
I am new to scripting in unix..
Anyway i'll jump straight to the problem that i am facing..
I have a file that, i have to search in the file for some specific data and update it.
For ex..
(a data row in the file)
12345678|abc

what i do is sed 's/\(12345678\).*/\1|cd/' fileName.dat from the unix prompt so that i change this row in the file to:
12345678|cd
running this command from the prompt gives me an output on the console and the row is indeed changed, but if i open the file then the row is still the same as was before the change!!!!..
i tried sed 's/\(12345678\).*/\1|cd/g' fileName.dat as well but the same result. i tried to run chmod 777 filename.dat and chmod +rwx filename.dat, before i ran the command, but the same result, i also tried to pipe the command in the following way:
sed 's/\(12345678\).*/\1|cd/' fileName.dat | >[fileName.txt]|mv fileName.txt fileName.dat
but this results in an an empty fileName.dat file!!!!!!!!!!!!!!!!!

Can someone help me on this please, i am not a unix programmer, i have scripted only as much to run a set of commands in one go (move to directory, find a file, run a shell script etc)..
i have not used ksh scripting to process data files before....

Please let me know, many thanks in advance....
Am
# 2  
Old 07-20-2008
It's not the default of sed to save the changes to the file, you can use the -i option if your sed version supports that:

Code:
sed -i 's/\(12345678\).*/\1|cd/' fileName.dat

Use a temporary file otherwise:

Code:
sed 's/\(12345678\).*/\1|cd/' fileName.dat > fileName.new
mv fileName.new fileName.dat

Regards
# 3  
Old 07-20-2008
Hi..thank you so much for your reply....

looks like the '-i' option is not supported the version we are using will use the temporary file option instead..
Also could you let me know if there is any change in behaviour for the sed command, if run from a script and if i were using variables from within the loop..that is to say if i were using it as below[actually this is what i am trying to do..heh]

cut -f1 -d "|" SomeOtherFileName.dat | while read rec
[some if condition that matches the number read in the loop]
then
sed 's/\($rec*\).*/\1|cd/' FileName.dat
else
echo 'bbye'

the rec is a variable of the while loop inside that is an 'if' condition inside of which i am trying to make this update happen!
I ask this because, sed is not changing/updating the data as it is supposed to, and as it does if i use that with absolute values from the unix prompt!!It is sending the output to the console and i can see the change is not happening..Smilie
Thanks again..
Am
# 4  
Old 07-20-2008
oh, i used double quotes in the command instead of the single quotes, and it's worked as supposed to....

Thanks a lot....
Am
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

sed Or Grep Problem OR Terminal Problem?

I don't know if you guys get this problem sometimes at Terminal but I had been having this problem since yesterday :( Maybe I overdid the Terminal. Even the codes that used to work doesn't work anymore. Here is what 's happening: * I wanted to remove lines containing digits so I used this... (25 Replies)
Discussion started by: Nexeu
25 Replies

2. UNIX for Dummies Questions & Answers

sed problem

Hi Folks, I want to replace these numbers with words as the following: $echo 1 11 223 I want to replace each number with it name (e.g. "1" replaced with "one", etc.) just to determine how sed works in such case. Thanks in advance:). Leo (8 Replies)
Discussion started by: leo_ultra_leo
8 Replies

3. Shell Programming and Scripting

sed problem

Hi i am stuck with a very silly problem :mad: below is my code echo 201010_1212_121.xml i need to replace xml with csv so i did echo 201010_1212_121.xml | sed 's/.*\.xml/.*\.csv/' echo 201010_1212_121.xml | sed 's/*.xml/*.csv/' echo 201010_1212_121.xml |... (4 Replies)
Discussion started by: aishsimplesweet
4 Replies

4. Programming

sed problem

Hi all In input file I have records like this: 0,1,0,87,0,0,"6,87","170,03",0,"43,5",0,0,0,0,"6,87","126,53"and in output file I need that these records transforms in : 0 1 0 87 0 0 6,87 170,03 0 43,5 0 0 0 0 6,87 126,53 Could you help me in this case? Please (3 Replies)
Discussion started by: shizik
3 Replies

5. Shell Programming and Scripting

SED - Problem

I have a file with a lot of numbers in it and I need to clean it up and make it look nice and proper. I found this little gem of a one-liner and basically understand what it is doing but I would like to further understand what each part of the command is doing. Being a newb, I am just trying to... (2 Replies)
Discussion started by: genedc1
2 Replies

6. Shell Programming and Scripting

Sed Problem

I have a file which contain many lines see below. "/var/www/abc>" I want to remove Both of these values "" and > (5 Replies)
Discussion started by: aliahsan81
5 Replies

7. Shell Programming and Scripting

Problem in sed.

Hi All! I am trying to use shell variables in a sed statement, but facing an error.I used the double quotes instead if single quotes in the sed statement. # sed -i -e "s/password/$decoded/g;" $CATALINA_HOME/conf/server.xml sed: -e expression #1, char 11: unterminated `s' command # ... (5 Replies)
Discussion started by: nua7
5 Replies

8. Shell Programming and Scripting

Problem with SED

Hi, I have to use SED to remove the prefix "219-" from a text file containing phone numbers and I have to remove the ":" as well. I write the following code but it does not seem to work. Can someone help me please? mohit@mohit-desktop:~$ sed -n s/219-/" "/p corp_phones_bak > noprefix1... (2 Replies)
Discussion started by: mojoman
2 Replies

9. UNIX for Dummies Questions & Answers

Problem with sed

Hi , echo "07/05/2008" | sed 's/\(..\)\/\(..\)\/\(..\)/\3\2\1/' Output :: 20050708 Expected output is 20080507 Iam not getting the bug in this. Thanks for the help -- penchal (4 Replies)
Discussion started by: penchal_boddu
4 Replies

10. UNIX for Dummies Questions & Answers

Sed Problem

I AM TRYING TO APPEND THE HOSTNAME OF A UNIX SERVER I WORK WITH SO I COULD DO A LOADING INTO A DATABASE. THE COMMAND I AM USING IS df -k | sed 's/^/dataserver /' What I intend to do is append the hostname dynamically by using the hostname command instead of having to manually enter... (1 Reply)
Discussion started by: Chelsea
1 Replies
Login or Register to Ask a Question