Você está com falta de awk
no script:
awk 'BEGIN{FS=OFS="|"} NR==FNR{$1="";++a[$0];next} {field1=$1;$1=""; if ( !(a[$0]) ) {$1=field1;print $0} }' \
/home/path/a.txt /home/path/b.txt > /home/path/c.txt
O script provavelmente também deve ter #!/bin/sh
como primeira linha.
Como alternativa, você converterá o script em um script awk
adequado:
#!/usr/bin/awk -f
BEGIN {FS = OFS = "|"}
NR==FNR { $1="";++a[$0]; next }
{
field1 = $1;
$1 = "";
if ( !(a[$0]) ) {
$1 = field1;
print $0;
}
}
... e depois executá-lo com, por exemplo,
$ ./bb.awk /home/path/a.txt /home/path/b.txt >/home/path/c.txt