У меня есть файл results.csv, который содержит имена в следующем макете:
name1, 2(random number)
name5, 3
и образец.txt, структурированный в следующем формате
record_seperator
name1
foo
bar
record_seperator
name2
bla
bluh
Я бынапример, искать для каждого имени в results.csv в файле sample.txt и, если оно найдено, вывести запись в файл.Я попытался сгенерировать массив из первого файла и найти его, но не смог получить правильный синтаксис.Это должно работать в скрипте bash.Если у кого-то есть идея получше, чем awk, это тоже хорошо, но у меня нет прав администратора на машине, на которой она должна работать.Настоящий CSV-файл содержит 10.000 имен, а sample.txt - 4.5 миллиона записей.Я - кровавый новичок в 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
edit: мой ожидаемый результат будет два файла:
name1.txt
record_seperator
name1
foo
bar
name2.txt
record_seperator
name2
bla
bluh