next up previous contents
Next: sed command命令 Up: sed Previous: 符合條件的addressing   Contents

pattern/hold space, 多regex條件與script檔

如果有兩個條件以上那可以加-e
$ sed -e xxxx -e xxxx file

例如先將註解行變成空白行然後砍掉所有空白行
$ sed -e 's/\(.*\)\(#.*\)/\1/' -e /^$/d file xxx.sh

sed其實每次都把一行放到pattern space,然後對他操作 執行結果再先放到pattern space這個地方,如果有 -e, 就接著對pattern space的行再做script的執行,所以好幾個條件是有順序的。 做完一行後,再來一遍,所以最通用的一般式應該是
	[address],[address]{
		command[args]
		command[args]
		...
	}

	或者
	[address],[address]{command[args];command[args];...;command[args];}
每一行command相當於有個-e的作用會先把結果放到一個pattern space, 可以寫成一個sed script file然後用-f 執行

$ sed -f script_file file

或者每個command的最後面要放個分號;。 另外sed有個hold space是個暫存東西的buffer,sed有些命令可以利用 hold space與pattern space,很像vi裡面的yy dd 先放到一個看不見的 buffer,再用p命令把它叫出來。

Cyril Huang 2002-06-14