Linux
在交替行上粘貼文本
假設有兩個文件,“main”和“rename”。文件“rename”有幾行名稱,用於附加在文件“main”的備用行上。(根據“重命名”中的位置)
我一直在使用
paste
連接來自不同文件的行,但我被困在這種情況下。有沒有其他方法可以在不使用複制和粘貼的情況下做到這一點?(最好使用可以在 Ubuntu Linux 18.04 中輕鬆使用的命令。)
文件“主要”
# stars # twinkle # on # the # sky
文件“重命名”
yellow white green red blue
期望的輸出
#yellow stars #white twinkle #green on #red the #blue sky
您可以
Awk
通過處理這兩個文件來使用,將一個文件內容保存在系統記憶體中,而在我們對其進行迭代時將另一個文件內容保存在系統記憶體中。awk 'FNR==NR{ words[NR]=$0; next}{ if ($0 ~ /^#/) $0 = $0 words[++idx]; print }' rename main
對其工作原理的簡要說明
- 該部分通過在數組中索引文件內容來
FNR==NR{ words[NR]=$0; next}
對第一個文件進行操作。是一個跟踪目前行號的特殊變數。所以數組變成了類似rename``words``NR``Awk``words['1']="yellow", words['2']="white"
- 之後的部分
{..}
現在適用於下一個文件rename
,如果該行匹配,我們通過附加創建的數組中的元素來#
更新目前行。$0
- 該
#
,以它開頭的行和其他行原樣列印。