Lê o argumento do script bash e passa para o comando awk [closed]

1

Eu quero executar um comando awk do script bash. Estou passando o caminho do arquivo como um argumento para o script bash, mas esse argumento não está funcionando no comando awk .

Meu arquivo bash mybash.sh code:

#!/bin/bash

file="$1"

echo $file

awk 'BEGIN{FS=OFS=","} NF!=5{print "not enough fields"; exit} NR == 1 && ($1 != "nasme" || $2 != "designation" || $3 != "email" || $4 != "phone" || $5 != "group") {print "Wrong file headers"; exit}' $file

Se eu executar o arquivo bash como:

bash mybash.sh /home/file_path.csv

meu script imprime $ file exatamente como o caminho que dei, mas meu comando awk não está lendo este $ file , porque imprime NF como 0 sempre. No entanto, o comando awk acima funciona bem diretamente no Terminal.

awk 'BEGIN{FS=OFS=","} NF!=5{print "not enough fields"; exit} NR == 1 && ($1 != "name" || $2 != "designation" || $3 != "email" || $4 != "phone" || $5 != "grsoup") {print "Wrong file headers"; exit}' /home/file_path.csv
    
por user5594493 24.11.2018 / 11:27

1 resposta

1

Eu faria o seguinte:

file="$1"

cat $file | awk 'BEGIN{FS=OFS=","} NF!=5{print "not enough fields"; exit} NR == 1 && ($1 != "nasme" || $2 != "designation" || $3 != "email" || $4 != "phone" || $5 != "group") {print "Wrong file headers"; exit}' > someoutputfile
    
por 24.11.2018 / 16:53