2016-02-28 67 views
1

隨着Vim的全局命令,能夠把多個命令與|(管道)符號匹配一些線時,例如:多個替換命令在匹配部分線路時的sed

g/match/ s/11/00/ | s/22/11/g 

這也可能與sed沒有重複match正則表達式?

sed -e '/match/ s/11/00/ ; /match/ s/22/11/g ' $file 

如果沒有,是否可以用perl來做到這一點?

回答

2

你可以使用:

echo "->11,22<- 
->01,20<-" | sed '/11/ {s/11/00/g; s/22/11/g}' 

輸出是:

->00,11<- 
->01,20<- 
  • /11/限制其{ ... }塊內的s命令只匹配行
+0

FYI在AWK你不需要重複'/ 1 1 /':'awk'gsub(/ 11 /,「00」){gsub(/ 22 /,「11」)} 1''。 –