Linux
向同一文本文件的特定間隔添加/插入不同的文本?
我知道如何將單個文本插入特定間隔。但現在我的問題是,我想將保存在
add.txt
文件中的不同文本/單詞插入到另一個文件的特定間隔中data.txt
。我想將第一個單詞 from 插入
add.txt
到 的特定位置data.txt
,然後將第二個單詞 from 添加add.txt
到下一個特定位置,依此類推。我
data.txt
包含兩列,但插入的單詞必須顯示為合併行。請參閱下面我需要的範例。
add.txt
2001-01-01 00:00:00 42 1 2001-01-02 00:00:00 42 1 2001-01-03 00:00:00 42 1 2001-01-04 00:00:00 42 1 2001-01-05 00:00:00 42 1
data.txt
-500 11.822788 -400 12.006394 -350 12.287062 -300 12.793395 -500 11.823597 -400 12.008012 -350 12.287062 -300 12.794204 -500 11.826023 -400 12.011247 -350 12.291915 -300 12.800675 -500 11.827641 -400 12.013674 -350 12.295959 -300 12.805528 -500 11.830067 -400 12.016100 -350 12.300003 -300 12.811998
我想
2001-01-01 00:00:00 42 1 -500 11.822788 -400 12.006394 -350 12.287062 -300 12.793395 2001-01-02 00:00:00 42 1 -500 11.823597 -400 12.008012 -350 12.287062 -300 12.794204 2001-01-03 00:00:00 42 1 -500 11.826023 -400 12.011247 -350 12.291915 -300 12.800675 2001-01-04 00:00:00 42 1 -500 11.827641 -400 12.013674 -350 12.295959 -300 12.805528 2001-01-04 00:00:00 42 1 -500 11.830067 -400 12.016100 -350 12.300003 -300 12.811998
我正在尋找使用
awk
,sed
或其他東西的最簡單的解決方案。
$ awk '(FNR-1)%4 == 0 { getline add <"add.txt"; print add }; 1' data.txt 2001-01-01 00:00:00 42 1 -500 11.822788 -400 12.006394 -350 12.287062 -300 12.793395 2001-01-02 00:00:00 42 1 -500 11.823597 -400 12.008012 -350 12.287062 -300 12.794204 2001-01-03 00:00:00 42 1 -500 11.826023 -400 12.011247 -350 12.291915 -300 12.800675 2001-01-04 00:00:00 42 1 -500 11.827641 -400 12.013674 -350 12.295959 -300 12.805528 2001-01-05 00:00:00 42 1 -500 11.830067 -400 12.016100 -350 12.300003 -300 12.811998
這用於
awk
讀取和輸出文件的每一行data.txt
。在輸出任何第 4 行之前,從add.txt
文件中讀取並輸出一行。不檢查是否
add.txt
正確讀取了從中讀取的數據(如果文件太短,上述程式碼將重複最後一行)。使用
paste
:$ paste -d '\n' add.txt - - - - <data.txt 2001-01-01 00:00:00 42 1 -500 11.822788 -400 12.006394 -350 12.287062 -300 12.793395 2001-01-02 00:00:00 42 1 -500 11.823597 -400 12.008012 -350 12.287062 -300 12.794204 2001-01-03 00:00:00 42 1 -500 11.826023 -400 12.011247 -350 12.291915 -300 12.800675 2001-01-04 00:00:00 42 1 -500 11.827641 -400 12.013674 -350 12.295959 -300 12.805528 2001-01-05 00:00:00 42 1 -500 11.830067 -400 12.016100 -350 12.300003 -300 12.811998
在這裡,我要求
paste
創建記錄,其中一行 fromadd.txt
作為第一個欄位,然後是四行 fromdata.txt
作為接下來的四個欄位。我將-d '\n'
字元設置為用作換行符的欄位分隔符。