У вас есть awk
, но пытаются запустить его как скрипт sh
. Это не сработает. У вас есть два варианта:
Вместо этого запустите его как сценарий awk. Поскольку в вашем файле уже есть строка шебанга (#!/bin/awk -f
), просто удалите кавычки и входные файлы:
#!/bin/awk -f
BEGIN{FS=OFS="|"} NR==FNR{$1="";++a[$0];следующий} {field1=$1;$1=""; если ( !(a[$0])) {$1=field1;print $0} }
Затем сделайте его исполняемым (chmod a+x bb.sh
) и запустите его:
./bb.sh /home/path/a.txt /home/path/b .txt > /home/путь/c.txt
Вы также можете удалить расширение .sh
или переименовать его в .awk
, чтобы оно вас не смущало. Компьютеру все равно, это только для вас.
Преобразуйте его в сценарий оболочки, который запускает команду awk
:
#!/bin/sh
awk 'BEGIN{FS=OFS="|"} NR==FNR{$1="";++a[$0];следующий} {field1=$1;$1=""; if ( !(a[$0])) ) {$1=field1;print $0} }' /home/path/a.txt /home/path/b.txt > /home/path/c.txt
A veces, los permisos pueden ser un problema :si uno de los archivos de configuración en su directorio de inicio ha terminado siendo propiedad de la raíz, entonces la sesión no puede guardarse cuando se cierra.
Creo que find. -user root
, ejecutar desde su directorio de inicio puede encontrar problemas como este.