我能找到的每個示例都演示sed
的w
命令在腳本的最後。如果我不能這樣做呢?如何讓sed'w'命令知道文件名的結尾?
一個例子可能會說明問題更好:
$ echo '123' | sed 'w tempfile; s/[0-9]/\./g'
sed: couldn't open file tempfile; s/[0-9]/\./g: No such file or directory
(如何)我可以改變的上方,使得sed
知道在哪裏的文件名結束?
P.S.我知道我可以做
$ echo '123' | sed 'w tempfile
> s/[0-9]/\./g'
...
有更漂亮的選擇嗎?
P.P.S.人們傾向於建議將其分成兩個腳本。問題在於:安全嗎?如果我要在w
命令之後的某個地方轉移,那麼該怎麼辦?等等。有人可以確認,任何腳本都可以分割成兩個後任何命令,那會不會影響結果?
最終編輯:我檢查了多個-e
工作只是作爲連接命令。我認爲它更復雜(就像第一個應該在第二個開始之前總是退出等等)。但是,我試圖在兩個腳本之間分割一個{..}
命令塊,它仍然可以工作,所以w
事情真的不是一個嚴重的問題。謝謝大家。
爲什麼不把它分割成多個命令,如'echo'123'| sed -e'w tempfile'-e's/[0-9] /\./ g''。這不是你想要的嗎? – Celada
@Celada實際情況更復雜,一切都在遞歸「標籤」內;也許我仍然可以以某種方式分裂它,但它可能是具有挑戰性的,而且我不確定它總是可以完成的。 –