[Linux]sed命令
目录命令介绍
格式:sed [-nefr] [动作]
选项与参数:
选项 | 含义 |
---|---|
-n | 使用silent模式,只有sed特殊处理的行才会被列出。 |
-e | 直接在指令列模式上进行sed的动作编辑。 |
-f | 直接将sed的动作写在一个文件内,-f filename |
-r,-E | 使用正则语法 |
-i | 直接修改读取的文件内容,而不是由屏幕输出。(危险操作) |
动作说明:[n1[,n2]]function
n1,n2:可选项,一般用于选择进行动作的行数。
有以下的function:
- a:新增,后接字符串,这些字符串会在指定行的下一行出现。
- c:取代,后接字符串,将指定行的字符替换。
- d:删除,删除指定行。
- i:插入,后接字符串,这些字符串会在指定行的上一行出现。
- p:打印,通常搭配-n一起用。
- s:取代,通常搭配正则表示。
命令示例
- 增加,a
在第二行后增加i'm skybiubiu并输出。
nl /etc/passwd | sed "2a i 'm skybiubiu"
-
删除,d
去掉2~5行输出。
nl /etc/passwd | sed '2,5d'
-
取代,c
将2~5行取代为i'm skybiubiu打印输出。
nl /etc/passwd | sed "2,5c i'm skybiubiu"
-
打印,p
搭配-n,输出1~5行的内容。
nl /etc/passwd | sed -n '1,5p'
-
搜索并取代,s
只将输出内容中匹配的部分替换,不会修改源文件。
sed 's/AAAAA/BBBBB/' /tmp/test.txt
-
修改文件内容(危险操作), -i
该操作会直接修改原文件内容,比较危险,建议先备份。
sed -i 's/AAAAA/BBBBB/' /tmp/test.txt
sed -i '$a CCCCC' /tmp/test.txt