簡體   English   中英

如何通過使用 awk/sed 在多個不同位置插入行來組合兩個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM