В ksh:
zip /another/directory/files_without_extension.zip !(*.*)
В bash запустите shopt -s extglob
, затем команду выше. В zsh запустите setopt ksh_glob
, затем указанную выше команду или альтернативно
setopt extended_glob
zip /another/directory/files_without_extension.zip ^*.*
У вас есть 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
В сценарии отсутствует awk
:
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
Вероятно, в первой строке сценария также должно быть #!/bin/sh
.
В качестве альтернативы вы можете преобразовать скрипт в правильный awk
скрипт:
#!/usr/bin/awk -f
BEGIN {FS = OFS = "|"}
NR==FNR { $1="";++a[$0]; next }
{
field1 = $1;
$1 = "";
if ( !(a[$0]) ) {
$1 = field1;
print $0;
}
}
... и затем запустить его, например, с помощью
$ ./bb.awk /home/path/a.txt /home/path/b.txt >/home/path/c.txt