sed, 是stream editor的缩写,顾名思义,就是个非交互式行编辑器,有以下特点:
- 它能执行与编辑器 vi 和 ex 相同的编辑任务
- sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出
- 没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上
其工作原理为:
和awk类似,调用sed命令有两种形式:
sed [options] 'command' file(s) sed [options] -f scriptfile file(s)
下面结合具体的使用场景来练习一下具体的使用:
文件后添加一行:
sed ‘$a newLine’ testfile
文件的第五行后添加一行
sed ‘5a newLine at line6’ testfile
文件的第一行后添加一行
sed ‘1i newLine test’ testfile
# 可以添加一个完全为空的空行 sed '4 a //' # 可以添加两个完全为空的空行 sed '4 a //n'
把文件中的awk 替换成 sed, 把2019替换成2022
sed 's/要被取代的字串/新的字串/g' //不会修改原文件,输出到窗口
sed -i 's/要被取代的字串/新的字串/g' //直接修改原文
批量操作当前目录下以 test 开头的文件:
sed -i 's/要被取代的字串/新的字串/g' ./test*
利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !
sed -i 's//.$//!/g' log.txt
利用 sed 直接在 log.txt 最后一行加入 # This is a test: ($ 代表的是最后一行,而 a 的动作是新增)
sed -i '$a # This is a test' log.txt
要删除第 3 到最后一行:
sed '3,$d' log.txt
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/282733.html