如何从文件中获取数据然后使用 awk 脚本将字段填充到其他文件中?

How to get data from a file then populate the fields into other file using awk script?

是否有任何其他方法可以从文件中获取数据,然后使用任何脚本文件(例如 awk)将字段填充到其他文件中? (sed 脚本可能可以使用它)注意:它不一定要使用 grep 和 find。

file1.txt

AAA Abcd
Watermelon Apple
8/25/19 11/24/19
4
55


file2.txt

[[letters_aaa]]
[[letters_abcd]]
[[fruit_names]]
[[date_start]]
[[date_end]]
[[four_hours]]
[[num_fiftyfive]]

合并到这个

AAA
Abcd
Watermelon Apple
8/25/19
11/24/19
4
55

我尝试使用 awk 脚本,但我不确定在找到行号后要写什么。 这个脚本是我所能做的:

BEGIN {
}
{
if(NR==1) {
  print  
}

现在是凌晨 2 点,所以我不确定你的问题或我的回答是否有意义。它使用 RS="" 读取文件,因此必须填写所有字段,空字段将破坏输出(在这种情况下使用 RS="^$" 并将 print 替换为 printf):

$ awk '
BEGIN {
    RS=""                                
}
NR==FNR {                                  # store file2 as template
    t=[=10=]
    next
}
{
    sub(/\[\[letters_aaa\]\]/,,t)        # replace template items with file fields
    sub(/\[\[letters_abcd\]\]/,,t)
    for(i=3;i<=NF-4;i++)
        fruit=fruit (fruit==""?"":OFS) $i  # dealing with space in names
    sub(/\[\[fruit_names\]\]/,fruit,t)
    sub(/\[\[date_start\]\]/,$(NF-3),t)
    sub(/\[\[date_end\]\]/,$(NF-2),t)
    sub(/\[\[four_hours\]\]/,$(NF-1),t)
    sub(/\[\[num_fiftyfive\]\]/,$NF,t)
    print t
}' file2 file1