2016-03-25 236 views
0

我正在努力解決另一個問題,這次涉及到重定向輸出到一個文件(>)。我有幾個文件名爲foo-ab.in foo-abc.in foo-abcd.in bar-ab.in bar-abc.in bar-abcd.in我想通過每個文件,改變一些小它的一部分與sed,然後重寫結果爲foo-ab2.in,foo-abc2.in和foo-abcd2.in爲每個文件。我至今是:sed輸出寫入輸入文件

for file in foo bar; do sed -n 's/text to change/replacement/ p' $file*.in> &1; done 

但我得到的錯誤:

-bash: syntax error near unexpected token `&' 

我明白,我可能做這一切錯了,但我想做到這一點:

for file in foo bar; do sed -n 's/text to change/replacement/ p' $file*.in > $file*2.in; done 

其中$file*2.in$file.in的名稱完全相同,中間附加了2,但由於有多個foo帶有ab,abc或abcd結尾,我不知道如何做到這一點。我已經有了我的sed命令,它只是輸出到正確的文件名,這讓我沮喪。

回答

0

顯然,類似這樣的答案已經存在在這裏:wildcard input files

但對於清晰度和關閉問題的緣故,答案是改變命令,如下所示:現在輸入

for file in foo*.in bar*.in; do sed -n 's/text to change/replacement p' $file > "${file%.*}"2.in; done 

文件foo-ab.in通過文件foo-abcd.in執行sed更改,並通過foo-abcd2.in輸出文件foo-ab2.in(對於bar * .in)。