【发布时间】:2019-06-23 20:42:51
【问题描述】:
我有一个 results.csv 文件,其中包含以下布局中的名称:
name1, 2(random number)
name5, 3
还有一个sample.txt,其结构如下
record_seperator
name1
foo
bar
record_seperator
name2
bla
bluh
我想在 sample.txt 文件中搜索 results.csv 中的每个名称,如果找到,则将记录输出到文件中。 我试图从第一个文件中生成一个数组并搜索它,但我无法正确获取语法。 它需要在 bash 脚本中运行。如果有人有比 awk 更好的主意,那也很好,但我在它应该运行的机器上没有管理员权限。 真正的 csv 文件包含 10.000 个名称和 sample.txt 450 万条记录。 我是 awk 的血腥初学者,因此将不胜感激。 这是我目前的尝试,它不起作用,我不知道为什么:
#!/bin/bash
awk 'BEGIN{
while (getline < "results.csv")
{
split($0,name,",");
nameArr[k]=name[1];
}
{
RS="record_seperator"
FS="\n"
for (key in nameArr)
{
print nameArr[key]
print $2
if ($2==nameArr[key])
NR > 1
{
#extract file by Record separator and name from line2
print RS $0 > $2 ".txt"
}
}
}
}' sample.txt
编辑: 我的预期输出将是两个文件:
name1.txt
record_seperator
name1
foo
bar
name2.txt
record_seperator
name2
bla
bluh
【问题讨论】:
标签: arrays awk full-text-search