📅  最后修改于: 2023-12-03 15:05:08.370000             🧑  作者: Mango
sed
是一种流编辑器,可以通过一连串的命令来处理输入流并生成输出流。其中,一个常见的应用场景是使用sed
删除文件中的某些行。
sed
命令的基本语法如下:
sed '[选项]... <script> [文件]...`
其中,[选项]
用于指定sed
的一些参数,<script>
用于指定sed
的命令脚本,[文件]
则表示要处理的文件列表。当<script>
未指定时,默认将每行输入视为命令脚本。
要删除文件中包含特定内容的行,可以使用sed
的删除命令d
。
首先,假设我们有一个文件test.txt
,其中包含以下内容:
$ cat test.txt
apple
banana
orange
grape
pear
现在,我们想要删除这个文件中包含单词orange
的行。可以使用以下命令:
sed '/orange/d' test.txt
该命令中,/orange/
是一个模式匹配符,表示匹配包含单词orange
的行。d
是删除命令,表示删除匹配的行。
执行以上命令后,将得到以下输出:
$ sed '/orange/d' test.txt
apple
banana
grape
pear
可以看到,原文件中包含单词orange
的行已被删除。
sed
默认是按行处理输入流的,即每次读取一行,然后执行相关命令。
sed
会将处理过的内容输出到标准输出,如果希望将结果写入到文件中,需要重定向输出流。例如,将结果写入新文件:
sed '/orange/d' test.txt > newfile.txt
sed
支持多条命令,可以通过;
将多个命令串连起来执行。例如,同时删除包含单词orange
和pear
的行:
sed '/orange/d; /pear/d' test.txt
sed
支持正则表达式,可以使用正则表达式来更精确地匹配文件中的内容。例如,使用\b
表示单词边界,匹配仅包含单词orange
的行:
sed '/\borange\b/d' test.txt
注意,\b
前后需要加上转义符\
,否则会被解释为退格符。
sed
还有很多其它高级用法,例如替换、插入、追加、转换等,可以通过参考sed
的官方文档进行学习。