SED单行脚本快速参考(流编辑器)第1/2页

2019-09-23 09:50:49于丽

# 只在行中出现字串“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有效