[[http://tmade.de|Home tmade.de]] [[http://wiki.tmade.de|Home Wiki]] ===== sed ===== Replace 12345 with 678910 in file mytest.txt and output to edited.txt sed 's/12345/678910/g' mytest.txt > edited.txt #Replace all occurencies sed 's/12345/678910/' mytest.txt > edited.txt #Replace single occurency sed -i 's/12345/678910/g' mytest.txt #Inline replace of all occurencies sed -i 's/12345/678910/' mytest.txt #Inline replace single occurency sed -i "s/V201/V210/" *_c.par #Inline replace of all occurencies sed -i 's!/path/to/replace!/replaced/path!g' #Replace a Path with "/" (delimter is "!") sed -i '/disable/s|^|#|' /path/to/file #Add "#" to beginning of line, if searchstring (disable) matches mv /folder/$i $(echo /folder/$i | sed 's/.lock$//'); #Rename a file saved in var "i" and remove ".lock" from filename Other examples: sed s/"if \[ \$vmdb_answer_OPEN_VM_COMPAT = 'yes' \] ; then"/"if \[ \"\$vmdb_answer_OPEN_VM_COMPAT\" = 'yes' \]; then"/g /etc/init.d/rc3.d/S01vmware-tools -i NETMASK=$(/sbin/ifconfig eth0 | grep Mask | awk '{print $4}'|sed 's/Mask://') **Replace string** with "space" oder several "spaces": Example: "this string will be replaced" sed -i 's/this\sstring\swill\sreplaced/replaced_string/g' * #replace "this string will be replaced" to "replaced_string" sed -i "s/ssl_protocols\s\sSSLv3;/ssl_protocols SSLv3 TLSv1.2;/g" *.conf #replace "ssl_protocols sSSLv3;" to "ssl_protocols SSLv3 TLSv1.2;" output to screen/console sed "s/12345/678910/" mytest.txt or sed -e "s/12345/678910/" mytest.txt Replace globaly recursive: grep -rl "domain.de/subfolder" /somedir | xargs sed -i "s/domain.de\/subfolder/replace_string/g" Replace lines beginning with ";" or "0-9": cat file | sed -i '/^[;0-9]/s|^|#disabled#|' or cat file | sed 's/^\(;\|[0-9]\)/#disabled#/' Search lines in file: sed -n "$i"p file #search line "i" in file sed -n "1"p file #search line "1" in file sed -n '10,20p' file #search line 10-20 Search pattern in files: sed -n '/PATTERN1\|PATTERN2\|PATTERN3/p' FILE Delete: sed -i '/search-string/d' file ====Search and add two lines==== Before sed: - name: IP value: "autodetect" After sed: - name: IP value: "autodetect" - name: IP_AUTODETECTION_METHOD value: "interface=ens18" Code: INTERFACE="ens18" sed -i 's/value: "autodetect"/value: "autodetect"\n - name: IP_AUTODETECTION_METHOD\n value: "interface='${INTERFACE}'"/g' ${CALIVERS} ====Explain==== Explication of options: s - substitute / - beginning of patter to match ^ - The null character at the start of the line \(....\) - store this in the pattern buffer [0-9]* - match any number of occurrences numbers in the range 0-9 [:] - match the ":" character .* - match any number of any characters (the rest of the line) / - end on the match patter and beginning on the replace pattern \1 - the first entry in the pattern buffer ( what was stored with \(...\) ) / - end of the replace pattern p - print