sed使用手册-原创
时间:2008-10-12 来源:skysong1982
sed使用手册。 以下内容允许转贴,转贴时请注时出处:www.gd-linux.com.作者:knight.时间:2007-5-20.
在sed语句,正则表达式必须封闭在//中间。如/^$/d,删除空行。
sed地址
在sed地址管理中,默认是对全局进行操作,同时地址可以分为行地址和模式地址。
如1,10d 12d 10,$d 表示行地址
如/^$/d 表示模式地址。
用户在进行操作时,可以对行地址和模式地址一起结合进行操作。如1,/^$/d 表示删除第一行到第一个空行之间的所有内容。
sed地址嵌入
address {
address
command1
command2
}
替换命令
语法格式:
[address]s/old/new/flags
flags如下:
n:1~512之间的数字,表示对本模式中指定的匹配行中出现第n次的情况时进行替换,其它行不进行替换。
如sed 's/unix/UNIX/2' sed.txt 替换每行中第个unix字符,将其转换成大写UNIX。
g:表示对全局进行替换。
p:打印模式空间的内容。即打印匹配行的内容。
w file:表示匹配行的内容写到另一个文件中。
注意:定界符可以使用多种,如“/”“#”“,”“!”等
s/ */ /g表示任意多个空格,用一个空格代替。
s/unix/aa&bb/g 表示将unix替换成aaunixbb。
删除命令
语法格式:
[address]d
如/^\.aa/d 删除.aa开头的内容。
/^$/d 删除空行的内容。 (应用到了模式地址)
10d 删除第10行的内容。 (应用到了行地址)
追加命令
语法格式:
[line-address]a\text
如sed '10a\abcd' sed.txt 在sed.txt文件中的第10行后面追加一行abcd字符。
sed '/unix/a\abcd\\ndcba' sed.txt 在sed.txt文件中所有出现unix字符的行后面追加一行abcd\ndcba字符
sed '/unix/a\abcd\n\dcba' sed.txt 在sed.txt文件中所有出现unix字符的行后面追加两行字符,其中第一行为abcd第二行为dcba。
插入命令
语法格式:
[line-address]i\text
如 sed '/unix/i\adflajflad\n\adfadfajdlf' sed-s.txt 在sed.txt文件中所有出现unix字符的行前面追加两行字符,其中第一行为abcd第二行为dcba。
更改命令
语法格式:
[address]c\text
如sed '1c\aaaa' sed-s.txt 将第一行的内容更改为aaaa.
转换命令
语法格式:
[address]y/old/OLD/ 将小写的old转换成大写的OLD字符。
使用y命令时,需要注意转换的字符个数一定要相同,当转换的字符个数不相同时,系统将提示错误。
打印行号
语法格式:
[address]= 打印匹配行的行号。
如 sed '/unix/=' sed.txt 打印sed.txt文件中,包含unix字符的行号。不包含unix字符的行,不打印行号。
sed '/yes/=' /etc/ssh/sshd_config
下一步,next
语法格式:
[address]n next改变正常的流控制,执行完这一步时,不返回,而是执行下一步内容。
读/写文件
语法格式:
[line-address]r file 读文件。
[address]w file 写文件。
如sed '/unix/r 1.txt' sed-s.txt 在unix字符的后面,读入1.txt文件
sed '2r 1.txt' sed-s.txt 在第2行后面,读入1.txt文件
sed '2,5w 2.txt' sed-s.txt 将第2行到第5行的内容,写到2.txt文件中去。
退出
语法格式:
[address]q
如sed ‘100q’ sed.txt 读到第100行时,退出。
sed '/unix/q' sed.txt 遇到第一个unix字符时退出。
在sed语句,正则表达式必须封闭在//中间。如/^$/d,删除空行。
sed地址
在sed地址管理中,默认是对全局进行操作,同时地址可以分为行地址和模式地址。
如1,10d 12d 10,$d 表示行地址
如/^$/d 表示模式地址。
用户在进行操作时,可以对行地址和模式地址一起结合进行操作。如1,/^$/d 表示删除第一行到第一个空行之间的所有内容。
sed地址嵌入
address {
address
command1
command2
}
替换命令
语法格式:
[address]s/old/new/flags
flags如下:
n:1~512之间的数字,表示对本模式中指定的匹配行中出现第n次的情况时进行替换,其它行不进行替换。
如sed 's/unix/UNIX/2' sed.txt 替换每行中第个unix字符,将其转换成大写UNIX。
g:表示对全局进行替换。
p:打印模式空间的内容。即打印匹配行的内容。
w file:表示匹配行的内容写到另一个文件中。
注意:定界符可以使用多种,如“/”“#”“,”“!”等
s/ */ /g表示任意多个空格,用一个空格代替。
s/unix/aa&bb/g 表示将unix替换成aaunixbb。
删除命令
语法格式:
[address]d
如/^\.aa/d 删除.aa开头的内容。
/^$/d 删除空行的内容。 (应用到了模式地址)
10d 删除第10行的内容。 (应用到了行地址)
追加命令
语法格式:
[line-address]a\text
如sed '10a\abcd' sed.txt 在sed.txt文件中的第10行后面追加一行abcd字符。
sed '/unix/a\abcd\\ndcba' sed.txt 在sed.txt文件中所有出现unix字符的行后面追加一行abcd\ndcba字符
sed '/unix/a\abcd\n\dcba' sed.txt 在sed.txt文件中所有出现unix字符的行后面追加两行字符,其中第一行为abcd第二行为dcba。
插入命令
语法格式:
[line-address]i\text
如 sed '/unix/i\adflajflad\n\adfadfajdlf' sed-s.txt 在sed.txt文件中所有出现unix字符的行前面追加两行字符,其中第一行为abcd第二行为dcba。
更改命令
语法格式:
[address]c\text
如sed '1c\aaaa' sed-s.txt 将第一行的内容更改为aaaa.
转换命令
语法格式:
[address]y/old/OLD/ 将小写的old转换成大写的OLD字符。
使用y命令时,需要注意转换的字符个数一定要相同,当转换的字符个数不相同时,系统将提示错误。
打印行号
语法格式:
[address]= 打印匹配行的行号。
如 sed '/unix/=' sed.txt 打印sed.txt文件中,包含unix字符的行号。不包含unix字符的行,不打印行号。
sed '/yes/=' /etc/ssh/sshd_config
下一步,next
语法格式:
[address]n next改变正常的流控制,执行完这一步时,不返回,而是执行下一步内容。
读/写文件
语法格式:
[line-address]r file 读文件。
[address]w file 写文件。
如sed '/unix/r 1.txt' sed-s.txt 在unix字符的后面,读入1.txt文件
sed '2r 1.txt' sed-s.txt 在第2行后面,读入1.txt文件
sed '2,5w 2.txt' sed-s.txt 将第2行到第5行的内容,写到2.txt文件中去。
退出
语法格式:
[address]q
如sed ‘100q’ sed.txt 读到第100行时,退出。
sed '/unix/q' sed.txt 遇到第一个unix字符时退出。
相关阅读 更多 +