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

By Madame
at 2009-08-24T17:27
at 2009-08-24T17:27
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行?
如果是這樣的話,請問有沒有方法可以讓指針往上跳?
謝謝執教 <( _ _ )>
--
: 可以'巢狀'地使用大括號'{}'來附加更多的條件
: $ 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行?
如果是這樣的話,請問有沒有方法可以讓指針往上跳?
謝謝執教 <( _ _ )>
--
Tags:
Linux
All Comments
Related Posts
請問sed多個條件的問題?

By Yedda
at 2009-08-24T11:39
at 2009-08-24T11:39
在Nautilus底下用wine使用winrar

By Ina
at 2009-08-23T16:38
at 2009-08-23T16:38
Quake Live: 運行在瀏覽器內的 3D FPS遊戲

By Tracy
at 2009-08-23T16:04
at 2009-08-23T16:04
急問!!想設一個很大的swap,可以嗎?

By Lily
at 2009-08-23T08:30
at 2009-08-23T08:30
有支援DRBL的無限開機網卡嗎?

By Genevieve
at 2009-08-23T03:16
at 2009-08-23T03:16