如何从文件中获取数据然后使用 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
是否有任何其他方法可以从文件中获取数据,然后使用任何脚本文件(例如 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