2017-04-22 56 views
-1

我有一個文件列表(文件1,文件2,文件3 ...),每個文件都有相同的字符串。我試圖改變字符串來讀取1,2,3 ...Linux - 在每個文件中查找並替換爲不同的字符串

不知道爲什麼我的命令似乎沒有做任何事情。

for i in {1..200}; do sed 's/foo/bar$i/g' file$1.txt; done 
+2

看看的sed的-i選項。 – Cyrus

+2

這可能有所幫助:[Bash中單引號和雙引號之間的區別](http://stackoverflow.com/q/6697753/3776858) – Cyrus

+1

如果我們可以看到這些文件的內容,這可能會更容易回答。 –

回答

1

要在sed字符串中使用變量,則需要用雙引號:

for i in {1..200}; do sed "s/foo/bar$i/g" file$1.txt; done # Files will not be modified 

這將只打印您sed命令的結果。

如果你想使你的文件中的實際替換然後使用-i操作:

for i in {1..200}; do sed -i "s/foo/bar$i/g" file$1.txt; done # Files will be modified 
0

什麼是file$1.txt的命令?或者這是一個腳本,並且$1是位置參數?即使那樣,我們也不確定你想要做什麼。正如其他人所提到的,我認爲您需要使用-i標誌來更改文件,但它也有助於查看文件中的內容以及您想要執行的操作。也許你的意思是file$i.txt

但我不知道你想做什麼,所以也許這是最好的創建備份文件:

for i in {1..200}; do sed -i.backup "s/foo/bar$i/g" file$i.txt; done 
相關問題