Я пытаюсь обработать 10 файлов с awk
в моем скрипте, и я получаю следующую ошибку.Ошибка обработки нескольких файлов
$ sh skipper.sh file1 filea fileb filec filec fileb filea fileb filec fileb awk: cmd. line:2: (FILENAME=filec FNR=7) fatal: cannot open file `file10' for reading (No such file or directory)
Кто-нибудь знает, как это исправить? Он отлично работает с < 10 файлами, но мне нужно использовать его 10 или 50 файлов.
Вот мой код
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"
}
}
}' $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
Это не проблема с awk. Это проблема оболочки. $ 10 - первый аргумент с 0 после того, как это не 10-й аргумент для скрипта. Я предлагаю добавить тег для используемой оболочки. У вашей оболочки может быть что-то, чтобы повторить всю командную строку вместо одного аргумента. – bbadour
Вы, вероятно, должны просто использовать '' $ @ "', а не перечислять все эти позиционные параметры '$ 1 $ 2 ...'. – Cascabel