Shell正则表达式 sed命令

sed是一种几乎包括在所有的UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sed [选项] '[动作]' 文件名
#''不能省略
选项:
-n 只输出经过sed处理过的行到屏幕
-e 允许一次应用多个动作
-i 直接修改文件,并且不由屏幕输出
动作:
a:追加,在当前行后添加一行或多行
i:插入,在当前行前插入一行或多行
c:整行替换,用c后面的字符串替换原数据行
d:删除,删除指定的行
p:打印,输出指定的行
s: 字串替换(替换格式与vim中的类似) '行范围s/旧字串/新字串/g'

1
2
3
4
5
6
7
8
sed -n '2p' student.txt 查看文件的第二行,如果没有-n将输出全部内容
sed '2,4d' student.txt 表示删除第2-4行,但是不改变文件本身
sed '2a piaoliangdecxiaoguniang' student.txt 在第2行之后添加字符串,但是不改变字符串本身
sed '2i heol' student.txt 在第2行之前插入数据
sed '4c xxwmpg' student.txt 将第二行的整行替换为xxwmpg
sed '6s/70/100/g' student.txt 将第7行的所有70全部替换为100,如果不指定行的话会替换所有的指定字符串
sed -i '6s/70/100/g' student.txt sed操作的数据直接写入文件
sed -e 's/fengj//g';s/cang//g' student.txt 同时把fengj和cang替换为空