2017-06-15 61 views
0

我有2個文件:A.txt,B.txt根據文本文件的名稱查找並替換文本文件中的單詞

這兩個文件都包含字母NODE。

我想在每個A.TXT和B.txt與A_NODE和B_NODE文件分別替換節點。

我知道有一個for循環和sed有關,但無法弄清楚這一個。有什麼建議麼?

我的想法是:

for file in *; do sed -i 's/NODE/$file.NODE/g' file; done 
+2

參見:[Bash中的單引號和雙引號之間的區別(https://stackoverflow.com/q/6697753/3776858) – Cyrus

+0

您是否嘗試過'set -x'或'echo sed -i's/NODE/$ file.NODE/g'file'進行調試? –

回答

0
for file in *; do sed -i "s/NODE/$(basename -s .txt file)_NODE/g" file; done 
  • 雙引號(")代替單引號(')使bash的可變內插(替換$表達)。
  • $(...)執行任意的外殼命令,並插入結果。
  • basename -s .txt刪除目錄部分和文件名後綴.txt
+0

確切的命令不起作用,但基於您的評論,我修改了一下,這確實:'文件在*; do sed -i「s/NODE/$(basename -s .txt」$ file「)_ NODE/g」$ file; done' – aram

0

謝謝@sapanoia:

這工作:

for file in *; do sed -i "s/NODE/$(basename -s .txt "$file")_NODE/g" $file; done

相關問題