【发布时间】:2016-06-11 14:02:57
【问题描述】:
使用 Vim 的全局命令,可以在匹配某些行时用|(管道)符号链接多个命令,例如:
g/match/ s/11/00/ | s/22/11/g
在不重复 match 正则表达式的情况下使用 sed 是否也可以做到这一点?
sed -e '/match/ s/11/00/ ; /match/ s/22/11/g ' $file
如果没有,是否可以用 perl 做到这一点?
【问题讨论】:
使用 Vim 的全局命令,可以在匹配某些行时用|(管道)符号链接多个命令,例如:
g/match/ s/11/00/ | s/22/11/g
在不重复 match 正则表达式的情况下使用 sed 是否也可以做到这一点?
sed -e '/match/ s/11/00/ ; /match/ s/22/11/g ' $file
如果没有,是否可以用 perl 做到这一点?
【问题讨论】:
你可以使用:
echo "->11,22<-
->01,20<-" | sed '/11/ {s/11/00/g; s/22/11/g}'
输出是:
->00,11<-
->01,20<-
/11/ 将其 { ... } 块内的 s 命令限制为仅匹配行【讨论】:
/11/: awk 'gsub(/11/,"00"){gsub(/22/,"11")}1'。