linux下sed命令的经常用法

sed是linux下的一种文本流编辑器。

sed - stream editor for filtering and transforming text. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).

sed和vim的命令有着相似之处,例如删除d,插入i,增加a,匹配/regexp/,替换s/regexp/replacement/等。

一般来说sed有着如下经常用法。

删除行

假设文件名为test.txt

$ cat <<EOF >test.txt
> Can you feel my warm?
> How about having dinner with me?
> How am supposed to live without you?
> How many times you stand up for youself.
> EOF

$ grep -ni 'how' test.txt

输出

grep-ni

那么sed删除第三行的命令为

$ sed '3d' test.txt

输出

sed-d

在某行前插入一行

在末行前插入某行

$ sed '$i\It does not matter to me.' test.txt

输出

sed-ilast

在第3行前插入某行

$ sed $'3i \Yes, I\'d like to.' test.txt

命令前的'$'表示'\'后的内容将被转义。

输出

sed-in

在某行后附加一行

在末行后附加某行

$ sed '$a\localhost    127.0.0.1' test.txt

输出

sed-alast

在第四行后附加某行

$ sed '4a\So many times.' test.txt

输出

sed-an

替换匹配到的字符

替换文本中所有匹配的字符

$ sed 's/How/Why/g' test.txt

输出

sed-sg

仅替换第2到3行匹配的字符

$ sed '2,3s/How/Why/g' test.txt

输出

sed-nN

仅替换末行匹配的字符

$ sed '$s/How/Why/g' test.txt

输出

sed-slast

保存编辑结果到文件

管道输出

$ sed '$s/How/Why/g' test.txt > out.txt
$ cat out.txt

输出

pipline-out

覆盖原文件,加-i选项

$ sed -i '$s/How/Why/g' test.txt
$ cat test.txt

输出

sed-save

sed作为一种文本流编辑器,从管道或文本文件中读取文本,然后编辑,在数据流替换和脚本控制中有较大的发挥空间。

关于本文如您有任何想法和意见,欢迎与我们联系,邮箱地址zhi@uqugu.com
您对本文有什么看法,喜欢或者不喜欢都可以发表意见。