sed命令在实际使用过程中千变万化,本文主要记录我自己在使用sed命令过程中一些具体用法的记录。以备以后重复查阅。
sed -i 实际执行sed命令。
sed命令不加-i可用于测试。只会空跑一次命令后返回结果,不会实际执行。
显示输出
输出时只想查看修改的行,可以使用-n和p的组合参数。
- -n 停止参数后的文本输出
- p 打印修改后的行
- -n和p参数不要和-i混用。否则,-n会将其他所有行都删除,p参数会增加匹配的行,最后只剩匹配的行。
root@test:~/test# cat test
123.exe
456.log
000.log
789.conf
root@test:~/test# sed -n "s/log/xxx/g"p test
456.xxx
000.xxx
替换字符串
1.替换的字符串中有空格时,需要使用转义字符"\"。
如:将"111"替换为" xxx"
sed -i 's/111/\ xxx/g' test.txt
匹配指定的行,然后替换字符串
1.匹配以abc字符串开头的行,将111修改为222
sed -i "/^abc/s/111/222/g" test.txt
2.匹配以变量开头时,变量要加单引号
sed -i '^'$test'/s/111/222/g' test.txt
sed中使用变量
使用双引号,即可直接使用变量。
[root@]# a=34
[root@]# b=56
[root@]# echo 123456 | sed "s/${a}/${b}/"
125656
sed删除空行
如果空行什么内容都没有
sed -i '/^$/d' file_name
如果空行开头有若干空格
sed -i '/^\s*$/d' file_name
#或
sed -i '/^ *$/d' file_name