Вы должны отличать скрипт оболочки от скрипта awk.В вашем случае
awk -v f=1 -v t=4 '{ for (i=f; i<=t;i++) printf("%s%s", $i,(i==t) ? "\n" : OFS = "\t") }' testa.maf > testa4.maf
- это команда оболочки.Три команды, которые вы отправили, являются сценарием оболочки.Это сценарий awk, который выполняет вышеуказанный сценарий оболочки:
{ for (i=f; i<=t;i++) printf("%s%s", $i,(i==t) ? "\n" : OFS = "\t") }
Если вы назвали этот сценарий script.awk
.Вы можете выполнить это, используя awk -v f=1 -v t=4 -f script.awk
.Сценарии оболочки не выполняются awk
, но (как правило) sh
или bash
.
Сценарии оболочки также могут иметь переменные, но они функционируют иначе, чем переменные awk.В частности, если вы хотите, чтобы в этом сценарии оболочки была переменная для выходного файла, вы можете сделать это:
file="$1"
awk -v f=5 -v t=62 '{ for (i=f; i<=t;i++) printf("%s%s", $i,(i==t) ? "\n" : OFS = "\t") }' $file > testa3.maf
awk -v f=1 -v t=4 '{ for (i=f; i<=t;i++) printf("%s%s", $i,(i==t) ? "\n" : OFS = "\t") }' testa.maf > testa4.maf
paste testa3.maf testa4.maf > $file.txt
Здесь $1
- первый переданный параметр;тогда вы можете вызвать ваш скрипт:
bash script.sh test.maf