假設你有一些文字是這樣的:桑達:複雜的圖案更換後(在同一行)
foobar 42 | ff 00 00 00 00
foobaz 00 | 0a 00 0b 00 00
foobie 00 | 00 00 00 00 00
bar 00 | ab ba 00 cd 00
,並要更改所有非00
在|
的右側與包裹()
,但僅限於|
的LHS具有00
。期望的結果:
foobar 42 | ff 00 00 00 00
foobaz 00 | (0a) 00 (0b) 00 00
foobie 00 | 00 00 00 00 00
bar 00 | (ab) (ba) 00 (cd) 00
有沒有的要對此使用SED的好辦法,還是我試圖延伸超越語言的能力?
這裏是我的工作至今:
s/[^0]\{2\}/(&)/g
包裝你的RHS值
/[^|]*00[^|]*|/
可以作爲一個地址的命令只能在有效行
的訣竅,現在是制定一個操作命令在模式空間的一部分中執行。
這實際上不是面向行的,這可以解釋爲什麼我無法獲得可用的表達式。
每當你發現自己在使用sed和包含單詞「space」(例如模式空間,保持空格)的發音短語時,就會使用錯誤的工具。 sed是簡單替換一行的優秀工具,但對於任何涉及構造函數s,g和p(帶-n)的任何東西,都應該使用awk。所有其他你可以用sed做的事情在20世紀70年代當awk被髮明並且應該被刪除的時候已經過時了。 –