加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

如何在Unix下使用sed命令

发布时间:2016-08-04 00:04:57 所属栏目:Unix 来源:站长网
导读:sed用法:sed 'Command' filename(s) 只显示结果而不修改文件。 1、sed '2,5d' file 显示文件file,除去2-5行,但行数超过文件实际行数时不会报错。 sed '/10

# 以79个字符为宽度,使所有文本居中。在方法1中,为了让文本居中每一行的前头和后头都填充了空格。 在方法2中,在居中文本的过程中只在文本的前面填充空格,并且最终这些空格将有一半会被删除。此外每一行的后头并未填充空格。

sed -e :a -e 's/^.{1,77}$/ & /;ta' # 方法1

sed -e :a -e 's/^.{1,77}$/ &/;ta' -e 's/( *)1/1/' # 方法2

# 在每一行中查找字串“foo”,并将找到的“foo”替换为“bar”

sed 's/foo/bar/' # 只替换每一行中的第一个“foo”字串

sed 's/foo/bar/4' # 只替换每一行中的第四个“foo”字串

sed 's/foo/bar/g' # 将每一行中的所有“foo”都换成“bar”

sed 's/(。*)foo(。*foo)/1bar2/' # 替换倒数第二个“foo”

sed 's/(。*)foo/1bar/' # 替换最后一个“foo”

# 只在行中出现字串“baz”的情况下将“foo”替换成“bar”

sed '/baz/s/foo/bar/g'

# 将“foo”替换成“bar”,并且只在行中未出现字串“baz”的情况下替换

sed '/baz/!s/foo/bar/g'

# 不管是“scarlet”“ruby”还是“puce”,一律换成“red”

sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g' #对多数的sed都有效

gsed 's/scarlet|ruby|puce/red/g' # 只对GNU sed有效

# 倒置所有行,第一行成为最后一行,依次类推(模拟“tac”)。由于某些原因,使用下面命令时HHsed v1.5会将文件中的空行删除。

sed '1!G;h;$!d' # 方法1

sed -n '1!G;h;$p' # 方法2

# 将行中的字符逆序排列,第一个字成为最后一字,……(模拟“rev”)

sed '/n/!G;s/(。)(。*n)/&21/;//D;s/.//'

# 将每两行连接成一行(类似“paste”)

sed '$!N;s/n/ /'

# 如果当前行以反斜杠“”结束,则将下一行并到当前行末尾,并去掉原来行尾的反斜杠

sed -e :a -e '/$/N; s/n//; ta'

# 如果当前行以等号开头,将当前行并到上一行末尾,并以单个空格代替原来行头的“=”

sed -e :a -e '$!N;s/n=/ /;ta' -e 'P;D'

# 为数字字串增加逗号分隔符号,将“1234567”改为“1,234,567”

gsed ':a;s/B[0-9]{3}>/,&/;ta' # GNU sed

sed -e :a -e 's/(。*[0-9])([0-9]{3})/1,2/;ta' # 其他sed为带有小数点和负号的数值增加逗号分隔符(GNU sed)

gsed -r ':a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/12,3/g;ta' # 在每5行后增加一空白行(在第5,10,15,20,等行后增加一空白行)

gsed '0~5G' # 只对GNU sed有效

sed 'n;n;n;n;G;' # 其他sed

=============================================================

4、选择性地显示特定行:

# 显示文件中的前10行 (模拟“head”的行为)

sed 10q

# 显示文件中的第一行 (模拟“head -1”命令)

sed q

# 显示文件中的最后10行 (模拟“tail”)

sed -e :a -e '$q;N;11,$D;ba'

# 显示文件中的最后2行(模拟“tail -2”命令)

sed '$!N;$!D'

# 显示文件中的最后一行(模拟“tail -1”)

sed '$!d' # 方法1

sed -n '$p' # 方法2

# 显示文件中的倒数第二行

sed -e '$!{h;d;}' -e x # 当文件中只有一行时,输入空行

sed -e '1' -e '$!{h;d;}' -e x # 当文件中只有一行时,显示该行

sed -e '1' -e '$!{h;d;}' -e x # 当文件中只有一行时,不输出

# 只显示匹配正则表达式的行(模拟“grep”)

sed -n '/regexp/p' # 方法1

sed '/regexp/!d' # 方法2

查看本栏目更多精彩内容:http://www.bianceng.cn/OS/unix/

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读