Saya mencoba untuk mencetak dari file menggunakan awk, tetapi output saya kosong. Ini kode saya sejauh ini
accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
awk -F',' '{ if($1==accountNum) { print $3.$2 } }' Accounts
done < Accounts
Saya juga sudah mencoba ini:
accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
echo $LINE | awk -F',' '{ if($1==accountNum) { print $3.$2 } }'
done < Accounts
File input adalah:
1,Doe,John
2,Rooney,Wayne
3,Smith,Will
4,Crow,Russel
5,Cruise,Tom
Output yang diharapkan ketika saya menjalankan file adalah
$./file.sh 3
Will Smith
Tapi saya mendapatkan yang berikut
$./file.sh 3
$
Itu tidak ada yang sedang dicetak. Saya tahu solusinya dengan cut, tetapi saya ingin menggunakan awk.
while
loop? :)Script Anda sudah praktis melakukan pekerjaan tanpa
awk
sama sekali:Saya tidak menyarankan bahwa ini adalah solusi yang lebih baik atau lebih efisien daripada menggunakan
awk
sendiri, tetapi jika Anda inginwhile...read
loop, ini tentu saja mengalahkanawk
proses terpisah per setiap baris. Hanya FYI, kurasa.sumber
Dengan
-v a="$1"
kita mengaturawk
variabela
ke nilai argumen baris perintah pertama skrip, maka kita menentukan bahwa input dipisahkan dengan koma-F ','
. Jika kolom pertama sama dengan nilaia
, cetak dua kolom lainnya dalam urutan terbalik.Anda tidak mendapatkan apa pun dalam output saat membandingkan kolom pertama dengan
awk
variabelaccountNum
, yang tidak disetel.Seandainya ada entri yang kolom pertamanya memiliki 0 (nol) di dalamnya, entri itu akan dicetak. Ini karena nilai variabel tidak disetel
awk
dievaluasi ke nol.sumber