sed用法
程序员文章站
2022-03-04 17:53:42
...
sed命令的选项
sed [选项] [动作]
-
选项与参数:
-r :支持正则表达式
-i :直接修改读取的文件内容,而不是输出到终端。
-n:使用安静(silent)模式,只有经过sed 特殊处理的那一行(或者动作)才会被列出来。(在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上) -
function:
s :替换,可以直接进行替换的工作,通常这个 s 的动作可以搭配正规表示法,例如 1,20s/old/new/g 一般是替换符合条件的字符串而不是整行
c :取代行, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d :删除行
a :后新增行
i :前插入行
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
一般function的前面会有一个地址的限制,例如 [地址]function,表示我们的动作要操作的行。
sed正则中的元字符
$ 表示行尾
^ 表示行首
[a-z0-9]表示字符范围
[^]表示除了字符集中的字符以外的字符
. 表示任意字符
*表示零个或者多个
sed的正则中 () 和 {} 需要转义
d删除行
#!/bin/bash
for i in range(1.8)
result +=i
return result
- 删除第 2-4 行
sed -i -r '2,4'd test.txt
- 删除以 for 开头的行
sed -i -r '/^for/d' test.txt
- 删除含有字符串 result 的行
sed -i -r '/result/d' test.txt
c替换行
- 将第一行文字替换为 helloworld
sed -i -r '1c hello world' test.txt
- 将含有字符串 result 的行内容替换为 helloworld
sed -i -r '/return/c hello world' test.txt
ai新增行
- 在第一行前新增一行内容为 ########
sed '1i #########' test.txt
替换部分字符串
#!/bin/bash
for i in range(1.8)
aa = 1aa
aa = 2aa
2bb = bb
result +=i
return result
- 将每行的第一个aa替换为 AA
sed -i -r 's/aa/AA' test.txt
- 将全文所有的aa替换为 AA
sed -i -r 's/aa/AA/g' test.txt
- 将第一行的b替换为B
sed -i -r '1s/b/B/g' test.txt
- 将第3行到最后一行的aa替换为AA
sed -i -r '3,$s/aa/AA/g' test.txt
- 将以数字开头的行中 bb替换为BB
sed -i -r '/^[0-9]/s/bb/BB/g' test.txt
- 将含有字符串 bin 的行中 ba 替换为 BA
sed -i -r '/bin/s/ba/BA/g' test.txt
搜索并输出行内容
- 搜索第二行并只输出第二行
sed -n '2p' test.txt #p搜索,n安静模式
上一篇: POJ_Prob.ID:3255
下一篇: 页码从第三页开始方法汇总