Я использую awk, и хочу отправить произвольное количество текстовых файлов (аргументов) в мой скрипт, и для каждого входного файла «напечатать что-нибудь».
Я нашел скрипт здесь
И изменил скрипт на этот
awk -v nfiles="10" 'NR==FNR{a[$0]++;next}
$0 in a {a[$0]++; next}
{b[$0]++}
END{
for(i in a){
if(a[i]==nfiles) {
print i > "output1"
}
else if(a[i]==1) {
print i > "output3"
}
}
for(i in b){
if(b[i]==nfiles-1) {
print i > "output2"
}
}
}' "$@"
Проблема в том, что я пишу в nfiles="10"
, поскольку предполагается, что это произвольное количество текстовых аргументов?
Также я не совсем понимаю этот скрипт, он только выполняет этот раздел
else if(a[i]==1) {
print i > "output3"
}
И выводит только информацию из file1.txt.Почему бы не выполнить все остальное, и что если я хотел бы распечатать все строки 3 ($3
) из всех файлов в output3
?Спасибо =)