![](/img/trans.png)
[英]How can I combine lines from two files using sed, awk, or other linux commands
[英]How to combine two files by inserting lines at multiple different locations with awk/sed
我有兩個文件:file1.txt 和 file2.txt。 第一個,file1.txt,包含大量信息,並且不定期地顯示單詞 TIMESTEP。 另一方面,第二個文件 file2.txt 僅包含一列 integer 值。 我想解析file1.txt,找到帶有TIMESTEP的行,然后用file2.txt中的下一行替換下面的行。 舉個例子:
文件1.txt
ITEM: TIMESTEP
54
abc
def
ghi
jkl
ITEM: TIMESTEP
55
horse
cat
dog
ITEM: TIMESTEP
56
tree
ITEM: TIMESTEP
57
house
school
...
文件2.txt
150
68
201
202
...
將它們組合起來得到:
ITEM: TIMESTEP
150
abc
def
ghi
jkl
ITEM: TIMESTEP
68
horse
cat
dog
ITEM: TIMESTEP
201
tree
ITEM: TIMESTEP
202
house
school
...
謝謝!
$ awk '
NR==FNR { vals[NR]=$0; next }
found { $0=vals[++cnt]; found=0 }
/TIMESTEP/ { found=1 }
{ print }
' file2 file1
ITEM: TIMESTEP
150
abc
def
ghi
jkl
ITEM: TIMESTEP
68
horse
cat
dog
ITEM: TIMESTEP
201
tree
ITEM: TIMESTEP
202
house
school
這可能對您有用(GNU sed):
sed -e '/TIMESTEP/{n;R file2' -e 'd}' file1
在遇到包含TIMESTEP
print 然后獲取下一行的行后,從 file2 讀取/打印一行,然后從 file1 中刪除當前行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.