General :: "find And Replace" In Shell (includes The / Character)?
Feb 27, 2011
I would like to know what shell command I could use for finding a phrase (which is a URL) in many files, with a different phrase. I have tried the "sed" command, but it does not like the forward slash.
I am bouncing a file across platforms (windows->solaris->mainframe), and the file is starting out with a "special" character (the registered trademark "circle R") in some of the records. This character is not in the EBCDIC character set on the MF, so it is unrecognizable. The MF developer I am working with asked if it is possible to replace the character with a specific hex value (AF) before it gets to the MF.
I was putzing around with sed, tr, etc. on the ksh command line, hoping to find an easy way to get one of them to substitute hex instead of ASCII. I have found that the usual shell utilities recognize the trademark character, so homing in on what to replace is solved. But I cannot get anything to actually substitute in the hex sequence I want. E.g. I was thinking something like...
>cat special_file | sed 's/R/AF/g'
But my version of sed does not seem to have hex "editing" capability.
This is what i doing to remove ( and ) sed 's/(//'|sed 's/)//') Can you offer me some better sed code that remove ( and ) with blank without using pipe (|) . I mean sed code that check ( or ) and replace that with blank character.
I have a CSV file with 8 columns. I want to check the 5th column, which will contain a single capitalised letter. If that letter is say "B" I would then like to replace the 2nd column in the csv with an incremental number starting at 0 (basically a count) with a prefix of B (B0000001) Sample row would be:
I have prepared a static lib(.a) comprising 2 function definitions. I have created a different shared library(.so) comprising 2 more functions. The two functions of .so use the functions defined in the .a file. That is, the .so file uses the services of the .a file. Next, I create an executable that uses the shared library(.so). When I build my executable, it needs to be linked with the .a file as well. it gives me undefined reference for the functions defined in the .a file. Why is that so? I am posing this question because, the .a file has already been included(static linking) while bulding the .so. Is there any workaround so that I need not link the .a file with my final executable?
i have a script where i need to pass an argument "1234:-)"if i run this as ./shell.sh 1234:-)it wont work because invalid character. i need to handle this with expect utility so if i pass it as ./shell.sh "1234:-)"no issue in bash but expect does not recognize this.
Recently I have moved to F11. While I am trying to install directFB explicitly, I am getting error related to X 11 dependencies. It could find no includes files under the directory /usr/include/x11/. But x11 libraries are available in the system. I remember that, i had these x11 include files in my F9. Do I need to install any external packages to get the x11 include files in place?
I want to use SED to do the following: In a text file replace any occurrences of the three character string ZZZ with a quotation mark "and. replace all occurrences of a comma with a semi-colon. It is the S/ / / command which is stumping me on the first issue...inparticular how to get the replace string to be quote.
I am trying to do Multi_key composition...But not able to find which is my character encoding scheme under /usr/share/X11/locale/ I have several direcotries under this folder...How can i come to kno which is my character encoding scheme..Any command for this ?
I would like help with modifying the following content:
toolbox/perl/man/man3/ExtUtils::Command.3::Command.3 differ toolbox/perl/man/man3/ExtUtils::Command::MM.3::Command::MM.3 differ I would like the content to be changed to: toolbox/perl/man/man3/ExtUtils::Command.3 toolbox/perl/man/man3/ExtUtils::Command::MM.3
I was not sure how to tell sed what to look for? I tried the following but it did not work. sed -i 's/::* differ//g' mandiff.log
Is there any command in Linux which will find a particular word in all the files in a given directory and the folders below and replace it with a new word?
I have a many directories each with about 20 html files inside. All the files have .html ext. What I'm hoping is possible is from command line to find some text in each one and replace it with some other text.
Basically what I want to replace is;
/awstats/ with awstats/
I can do this easily with dreamweaver or some other application but because I have 960 pages total to do I'm hoping to do it this way.
After hours (literally) of searching the web and reading man pages, I think I've come up with the following:Code:find . -exec grep 'path/to/file' -print | xargs -0 -I new_path mv {this is where I get confused}So my code above is incomplete, obviously. In order to finish replacing the string, I need to mv the new file into the old file's spot. How do I do this, by incorporating it into my line of code?
I am new to linux as well as awk, grep or sed. I need a find and replace command single liner or script that loops trough input file (file1) and find the particular input in file2 and add "!" in front of the found string.
Example: input file: file1 g+h=o+p a+b=c+d file2 (file that need to look for) a+b=c+d1e105 x+y=z+s5e105 g+h=o+pabcdefg t+r=w+qxvyderf
Output file (file3 should look like this) !a+b=c+d1e105 x+y=z+s5e105 !g+h=o+pabcdefg t+r=w+qxvyderf
I have tried many awk and sed method of find and replce but it did not work the way I wanted. This is mainly due to my lack of experience in awk and sed. The program should loop trough file1 and find in file2 and output in file3 for the 1st (g+h=o+p) set then repeat the same process again for set 2 (a+b=c+d).
I have an SQL dump, file.sql that has many references to a particular domain, d1.com. I would like to run a command that can replace every occurrence of d1.com with d2.com. I've tried looking into sed before but the man pages are quite daunting.
when I try to enter an escape sequence in the interactive mode of dash, it keeps on spewing out the <ESC> character as ^[ displayed in plain text instead of catching it as a control character. I vaguely remember encountering this on some UNIX shell but for the life of me I can't find anything on it. So how do I properly enter escape sequences in dash's interactive mode? (it supposedly supports vi line edit mode but I can't access it at all because of the ESC situation)It's not a make-or-break thing.
What I have works, but wondering what is the 'right' way to replace the digits with the letters given in this loop? somehow use a case or multiple sed? i thought of a multiple sed or a case but couldn't get it to work
Code:
# ... bcv=$(echo $line | awk -F" " '{ print $1 }' | sed 's/1/q/g;s/2/w/g;s/3/e/g') # and so on
Code:
while read line do bcv=$(echo $line | awk -F" " '{ print $1 }') if [ $bcv == "" ]
Inside a loop i'm populating a string variable. Because csh doesn't have very good support for arrays I thought of doing this. I want to add a new line character to the end of the concatenation each time the loop iterates. Then at the end print this variable out.
I tried " and some resources said it was just a "". Neither work. What am I doing wrong?