sed

Sed: streameditor editor 流编辑器 ,主要用于文本处理。


sed命令格式:
sed -options ’expression1;expression2’ file 执行多个命令
sed -options [-e ‘expression1’] [-e ‘expression2’] file 执行多个命令
sed -options [-f scriptfile] file 通过脚本执行命令
sed -options [-f scriptfile] file > newfile #sed修改后重定向到新文件。
sed指令需要用单引号包围。
Sed默认并没有修改文件file中的数据。
sed默认在stdout输出文件的所有行。
Sed地址需要使用/address/来包围。
sed使用正则表达式可以用\BRE\包围,如果模式包含/,那么可以使用除了换行符之外的所有字符包围。

options
-e:指定多个命令或脚本
-f:指定执行命令的脚本
-n:阻止自动输出,p可以打印匹配的行。


expression

指令由模式和过程组成。
[address]/[line-address][!]command[arguments]
[address]表示地址,一般用模式进行寻址,address缺省表示整个文件寻址,两个地址用,隔开。
[line-address]表示只能是一个地址。
[!] 表示不匹配该地址的所有行

Command:
sed25个命令。
使用大括号{}在一个地址中做嵌套操作:例如:
/address1/,/address2/{
/^$/d
s/string1/string2/

}单独一行,后面不能有空格

s命令:替换,替换模式空间中的行。
'[address]s/oldpattern/newpattern/[flag]'
flag:
n:替换每个寻址行的第n个匹配模式。默认n=1.n
n1-512之间。
g:替换每个寻址行的所有匹配模式。
p:打印模式空间的内容
file:如果发生替换就将这一行写入file。只写入替换的行。

用反斜杠\转义换行符:
因为反斜杠在newpattern中也用于包含换行符。
sed 's/pattern/\
\
string/' filename
等价于:
sed 's/pattern/\n\n/' filename
将匹配的项替换成两个换行符。

用反斜杠\转义与符号&
sed 's/pattern/string1 & string2/g' filename
上面结果是: string1pattern string2
如果不转义&匹配整个pattern
sed 's/pattern/string1 \& string2/g' filename
上面结果是:string1& string2


用反斜杠\转义\n:
sed 's/pattern/\1/' filename
上面是将pattern中匹配到的第一个字串回调到newpattern中使用。

d命令:删除,删除模式空间中的行,并不删除文件中的行。
'[address]d'
'1d'
删除第一行
'$d'
删除最后一行
/^$/d'
删除空行


a/i/c命令:追加/插入/更改.
'[line-address]a string' filename
'[line-address]a\
string1\
string2\
string3' filename (追加三行)
在匹配到的行下面添加追加的内容
i:同上,在匹配到的行上面插入内容。
'[address]c string' filename
'[address]c\
string1\
string2\
string3' filename
将匹配到的行替换掉。


l:列表命令
sed '[address]l' filename 打印模式空间内容,将非打印字符显示为ASCII

p:打印命令
sed '[address]p' filename 打印模式空间内容
=:打印行号
sed -n '[line-address]=' filename 只打印行号

n:下一步
sed '[address]n' filename

q:退出命令
sed '[line-address]q' filename
一旦找到和line-address匹配的行,脚本立即退出。

r/w:/写命令
sed '[line-address]r file' filename
file文件追加在匹配到的行后面。
sed '[address]w file' filename
将匹配到的行写入到file文件中


未完待续......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值