Saya memiliki kode berikut dalam file bernama awktest1.awk
:
#!/bin/awk -f
BEGIN{print "start"}
{print $2, "\t", $5}
END{print "end"} employee.txt
di mana employee.txt
berisi data berikut:
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Sanjay Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
500 Randy DBA Technology $6,000
Saya menjalankan awk
perintah sebagai:
awk -f awktest1.awk
tetapi hanya mencetak start
dan tidak berakhir. Adakah yang bisa membantu saya dengan kesalahan saya di sini?
shell-script
awk
Saket Agarwal
sumber
sumber
print $2, "\t", $5
sebagai lawanprint $2 "\t" $5
, Anda sedang menulis bidang ke-2 diikuti oleh OFS (spasi), TAB, OFS dan bidang ke-5.Jawaban:
Kesalahannya adalah memberikan nama file untuk diproses dalam skrip; Anda harus menghapus
employee.txt
dari skrip dan menjalankannya sebagai berikutatau bahkan, jika skrip dapat dieksekusi,
Script menjadi
Saat ini,
awk
sedang menunggu input dari input standar alih-alih membaca dari file. Itu sebabnya tidak pernah berakhir ...sumber
Untuk melengkapi jawaban @ Stephen , jika Anda ingin meng-hardcode nama file input dalam
awk
skrip, Anda akan menulis:Untuk beberapa file:
sumber
Atau jika Anda tidak ingin memberikan nama file
employee.txt
sebagai argumen baris perintah, Anda dapat melakukan sesuatu seperti ini:Kode:
sumber