請問sed多個條件的問題? - Linux

Table of Contents

※ 引述《roylee17 (把我id還我阿......)》之銘言:
: 可以'巢狀'地使用大括號'{}'來附加更多的條件
: $ cat input.txt
: aa
: bb
: cc
: dd
: cc
: $ sed -e '/aa/{ n; /bb/{ n; s/cc/zz/ } }' input.txt
: aa
: bb
: zz
: dd
: cc

謝謝這位前輩,原來可以巢狀,又學到一招了
但是我又發現了一個問題
那就是如果文件是這樣的
1. aa 123
2. bb,cc
3. aa 123
4. aa 123

而我的條件檔這樣寫
/aa/{
s/123/456/
n; /bb/{
s/cc/zz/
}
}

那麼在cc的地方確實會替換成zz
但是在第4行的aa 123,此處的123就不會被替換掉了

結果:
1. aa 456
2. bb,zz
3. aa 456
4. aa 123

我猜測是在第三行修改123完的時候
指針因為n參數的關係已經跳到下一行了
然後做完判斷bb又繼續往下一行去
所以跳過了第4行?

如果是這樣的話,請問有沒有方法可以讓指針往上跳?
謝謝執教 <( _ _ )>

--

All Comments