Я пытаюсь распечатать из файла с помощью awk, но мой вывод пуст. Вот мой код до сих пор
accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
awk -F',' '{ if($1==accountNum) { print $3.$2 } }' Accounts
done < Accounts
Я также попробовал это:
accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
echo $LINE | awk -F',' '{ if($1==accountNum) { print $3.$2 } }'
done < Accounts
Входной файл:
1,Doe,John
2,Rooney,Wayne
3,Smith,Will
4,Crow,Russel
5,Cruise,Tom
Ожидаемый результат при запуске файла
$./file.sh 3
Will Smith
Но я получаю следующее
$./file.sh 3
$
Это ничего не печатается. Я знаю решение с разрезом, но я хочу использовать awk.
while
петлю? :)Ваш скрипт уже практически делает работу без каких-либо
awk
:Я не предполагаю, что это лучшее или более эффективное решение, чем использование в
awk
одиночку, но если вы хотитеwhile...read
цикл, это, безусловно, лучше, чем отдельныеawk
процессы для каждой строки. Я полагаю, просто к вашему сведению.источник
При
-v a="$1"
установкеawk
переменнойa
в значение первого аргумента командной строки скрипта, мы указываем, что ввод разделяется запятой-F ','
. Если первый столбец равен значениюa
, выведите два других столбца в обратном порядке.Вы ничего не получаете в своем выводе, когда сравниваете первый столбец с
awk
переменнойaccountNum
, которая не установлена.Если бы была запись, в первом столбце которой было 0 (ноль), эта запись была бы напечатана. Это потому, что значение неустановленных переменных в
awk
нуле.источник