linux-sed:处理数据

Linux:sed

依照脚本的指令处理、编辑文本文件,一行一行的更改

主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

语法和选项

语法

1
sed [-hnV][-e<script>][-f<script文件>][文本文件]

选项

选项 含义
-e 以指定的script来处理输入的文本文件。
-f 以指定的script文件来处理输入的文本文件
-n 仅显示script处理后的结果。
-i 直接修改读取的文件内容,而不是由屏幕输出。
-r sed 的动作支持的是延伸型正则表达式的语法。(默认是基础正则表达式语法)

动作说明

动作 含义
a 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d 删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p 打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s 取代,可以直接进行取代的工作,通常这个 s 的动作可以搭配正规表示法!

示例

1
2
# 删除passwd的4-10行
cat -n passwd | sed '4,10d'

image-20210304002056235

1
2
# 在第四行后面添加啊啊啊
cat -n passwd | sed '4a 啊啊啊'

image-20210304002154588

1
2
# 以2-5取代2-5行
cat -n passwd | sed '2,5c 2-5'

image-20210304002626223

1
2
# 显示2-7行
nl passwd | sed -n '2,7p'

image-20210304003003921

1
2
# 修改passwd1文件中的root为ROOT,最后的g为全部更改
sed -i 's/root/ROOT/g' passwd1

image-20210304003827596