sed

stream editor
文件或命令行获取一行文本,进行处理输出,不修改原始文本
从命令行读取是输入一行,处理一行,再输入一行(这就是第二行),结束Ctrl+D(发送EOF)
行匹配模式:

   什么也没有代表匹配所有行
   2 //第二行
    2,3 //第二行到第三行
    2,$  //第二行到最后一行,$代表最后一行
    /pattern/  //匹配pattern的行
    /pattern1/,/pattern2/ //匹配pattern1的行(包含自己)到匹配pattern2的行(包含自己),可以有多个区间

行模式后可有一到多个命令,一个直接放后面,多个{}并加 ;分隔 2{s/aa/bb/;s/cc/dd} ,不想用分号可如下单引号(次提示符)
多个命令,即多个(行模式+命令) 可用 ;分隔 ,也可以-e 后面添加命令 sed -e 's/aa/bb/;s/cc/dd/' -e 's/ww/tt/' aa.txt
sed 's/aa/bb/;s/cc/dd/' aa.txt 不想用;分隔可以多行输入在单引号(次提示符)行开始,单引号行结束

sed '
s/aa/bb/
s/cc/dd/
' aa.txt

-f 指定命令文件
1 s 替换

s/aa/bb/ 只替换行中第一个aa为bb
s/aa/bb/2 只替换第二个 
s/aa/bb/g 替换行中所有aa
s/aa/bb/p (如果模式匹配,替换成功,再打印替换后的文本,总共打印了两次)
-n 禁止输出,但是禁止不了p, sed -n 's/aa/bb/p' aa.txt  每一行不管是否有替换都会输出一次,有匹配替换的话行还会多输出一次,-n 禁止了原始的输出,只有p导致才会输出
s/aa/bb/w aa.txt  有匹配替换的话行还会多输出一次到指定文件
s的文本包含/,转义为\/, 或者其他字符替换/作为分隔符,如 s!a/a!b/b! 

2 d 删除
3 i 前面插入新行 a 后面插入新行
sed '3i\hello,xu' 插入多行 如下

sed '3a\
hello,xu\
ok,man' aa.txt  \\第一个\用来分隔命令和文本,插入多行那么除最后一行每行后面加\ 且需要多行输入

4 c 修改 sed '3c\hello,xu' ,特殊情况使用2,3c 会把2行和3行改为新的一行
5 y 字符替换 y/abc/def/ 每个a改成d,每个b改成e等
6 单独的p:打印文本行,=:打印行号,l :列出行,含换行符(用$表示)等特殊符号,这些-n都禁止不了
7 w 写入文件 1,2w out.txt r 读取文件 3,4r data.txt 第三行输出后,读取并输出data.txt的内容,第四行一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值