sed入门

字符串替换

将1.sh中的echo替换成haha

[root@mio-test ~]# cat 1.sh 
#!/bin/bash

file_jpg='2222.class.php.jpg'
file_name=${file_jpg##*.}
echo $file_name

[root@mio-test ~]# 
[root@mio-test ~]# cat 1.sh | sed s/echo/haha/
#!/bin/bash

file_jpg='2222.class.php.jpg'
file_name=${file_jpg##*.}
haha $file_name

-i 将替换结果应用到原文件

[root@mio-test ~]# sed -i 's/echo/replace_echo/' 1.sh 
[root@mio-test ~]# cat 1.sh 
#!/bin/bash

file_jpg='2222.class.php.jpg'
file_name=${file_jpg##*.}
replace_echo $file_name

-g 替换所有匹配的字符串

[root@mio-test ~]# sed -ig 's/file/replace_file/' 1.sh 
[root@mio-test ~]# cat 1.sh
#!/bin/bash
replace_file_jpg='2222.class.php.jpg'
replace_file_name=${file_jpg##*.}
replace_echo $replace_file_name

移除空白行

[root@mio-test ~]# cat 1.sh | sed '/^$/d'
#!/bin/bash
replace_file_jpg='2222.class.php.jpg'
replace_file_name=${file_jpg##*.}
replace_echo $replace_file_name

已匹配字符串标记&

&可以标记匹配的字符串,比如我们要给每个单词加一个[]

[root@mio-test ~]# echo 'haha is hehe' | sed 's/\w\+/[&]/g'
[haha] [is] [hehe]

引用

可以在替换中使用变量

replace='replace_word'
find='word'

txt='word is word'

echo "$txt" | sed "s/$find/$replace/g"
#输出replace_word is replace_word