08-01-2007
sed in script
I'm trying to write a simple script that replaces a string. The script works for uninterrupted strings, but as soon as sed encounters a space it stops reading the new string. I've tried double quotations in sed and backslashes before the $, however these don't work. Below is the script. Any help would be greatly appreciated. Thanks.
#!/bin/tcsh
set stringOld=$1
shift
set stringNew=$1
shift
#
#Replaces stringOld with stringNew inside fileName
foreach file ($*)
mv $file $file.bak
sed s/$stringOld/$stringNew/g $file.bak > $file
if ( { cmp $file $file.bak } )then
echo \*\*$file has not changed
rm $file.bak
endif
end
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I have a lot of script files that were created by Extract in a dir that no longer exists. Now that I have to run these scripts they 'all' have to be changed. I'm looking for a way to do a 'mass' change if possible.
So far, I've dumped all of the script file names to a file and sorted them to... (5 Replies)
Discussion started by: HOlli
5 Replies
2. UNIX for Dummies Questions & Answers
I am having a shell script that connects to database half hourly and pulls out the backlog from some tables. Now that logfile is growing too big and I need to housekeep it! effectively I want to keep last 30 days data in that file and move rest to archived file.
The file contents are as below.... (14 Replies)
Discussion started by: abhi123
14 Replies
3. Shell Programming and Scripting
/\/\*/!b
:x
/\*\//!{
N
bx
}
s/\/\*.*\*\///
This scipt should remove c like commnets /**/
i know what de last line does
but i dont't know what the first lines do
Can anyone explain please (3 Replies)
Discussion started by: clauchiorean
3 Replies
4. Shell Programming and Scripting
I am trying to run a sed command within a script to edit a file.
I am trying to put the value of MYUSER into the sshd_config file.
Instead of putting the value of the variable, MYUSER, it puts in the string ${MYUSER}.
Anyone know a good solution to this?
cat ${SSHD_CONFIG} | sed... (1 Reply)
Discussion started by: Mike_the_Man
1 Replies
5. Shell Programming and Scripting
how to convert the follow sed script file into a command line ?
example:
/^\.TS/,/^\.TE/{
/^$/p
}
I have tried the below but it is not working:
# sed -n "/^\.TS/,/^\.TE/{/^$/p}" file
file:
111
.TS
222
$333 << extract this line
444
.TE
555 (2 Replies)
Discussion started by: 3Gmobile
2 Replies
6. UNIX for Dummies Questions & Answers
:rolleyes:
I have a series of folders /temp/a /temp/b /temp/c
In folders a, b, and c, I have files
a1.txt..........a20.txt
b1.txt..........b40.txt &
c1.txt..........c60.txt
Each file has the same data format :-
Line... (2 Replies)
Discussion started by: grinder182533
2 Replies
7. Homework & Coursework Questions
Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!
1. The problem statement, all variables and given/known data:
Create a sed script that will display a list of all users in the /etc/passwd file that belong to the group... (0 Replies)
Discussion started by: lakers34kb
0 Replies
8. Shell Programming and Scripting
I am beginner for Unix. I practicing unix shell script. I worked out some sed script example from internet. Everything fine.
But in real unix environment, where sed script is mainly used.?
Can anyone give some examples for the usage of sed script in real unix environment. It will be useful for... (1 Reply)
Discussion started by: gwgreen1
1 Replies
9. Shell Programming and Scripting
Hi ,
i am stuck in this simple script.
#!/bin/ksh
echo "enter the file name"
read flname
echo "enter version"
read ver
grep $flname /home/con/snsc/perl/map > flplist
dirname `cat flplist` | sed 's/\/so${vers}\//\/so${vers}_xyz\//' > dirlist
the map file is basically a list of file... (3 Replies)
Discussion started by: debu182
3 Replies
10. Shell Programming and Scripting
I am having a file as stated below :
File 1:
##########################
idnd a
integer 2;
list 1 ;
list2 ;
chip top alist( .a(1) , .b(2) , .c(3) ,
.d(1) , .e(7) , .n(80),
.d(1) , .g(7) , .n(80),
.f(1) , .e(7) , .m(80));
lis 7 nfj ;
jdjd kn;
jsjd l ; (4 Replies)
Discussion started by: kshitij
4 Replies
sdiff(1) General Commands Manual sdiff(1)
NAME
sdiff - Compares two files and displays the differences in a side-by-side format
SYNOPSIS
sdiff [-l | -s] [-w number] [-o output_file] file1 file2
The sdiff command reads file1 and file2, uses diff to compare them, and writes the results to standard output in a side-by-side format.
OPTIONS
Displays only the left side when lines are identical. Creates a third file, output_file, by a controlled interactive line-by-line merging
of file1 and file2. The following subcommands govern the creation of this file: Adds the left side to output_file. Adds the right side to
output_file. Stops displaying identical lines. Begins displaying identical lines. Enters ed with the left side, the right side, both
sides, or an empty file, respectively.
Each time you exit from ed, sdiff writes the resulting edited file to the end of output_file. If you fail to save the changes
before exiting, sdiff writes the initial input to output_file. Exits the interactive session. Suppresses display of identical
lines. Sets the width of the output line to number (130 characters by default).
DESCRIPTION
The sdiff command displays each line of the two files with a series of spaces between them if the lines are identical, a < (left angle
bracket) in the field of spaces if the line only exists in file1, a > (right angle bracket) if the line only exists in file2, and a | (ver-
tical bar) for lines that are different.
When you specify the -o option, sdiff produces a third file by merging file1 and file2 according to your instructions.
Note that the sdiff command invokes the diff -b command to compare two input files. The -b option causes the diff command to ignore trail-
ing spaces, tab characters, and consider other strings of spaces as equal.
EXAMPLES
To print a comparison of two files, enter: sdiff chap1.bak chap1
This displays a side-by-side listing that compares each line of chap1.bak and chap1. To display only the lines that differ, enter:
sdiff -s -w 80 chap1.bak chap1
This displays the differences at the tty. The -w 80 sets page width to 80 columns. The -s option tells sdiff not to display lines
that are identical in both files. To selectively combine parts of two files, enter: sdiff -s -w 80 -o chap1.combo chap1.bak
chap1
This combines chap1.bak and chap1 into a new file called chap1.combo. For each group of differing lines, sdiff asks you which group
to keep or whether you want to edit them using ed.
SEE ALSO
Commands: diff(1), ed(1)
sdiff(1)