Saya sedang membaca skrip awk ini
awk -F"=" '{OFS="=";gsub(",",";",$2)}1'
Saya ingin tahu apa fungsi 1
di akhir itu
linux
shell-script
awk
Randhir Singh
sumber
sumber
awk -F"=" '{OFS="=";gsub(",",";",$2)}{print}'
Jawaban:
Suatu
awk
program adalah serangkaian pasangan kondisi-tindakan, kondisi berada di luar kurung kurawal dan tindakan yang terlampir di dalamnya. Suatu kondisi dianggap salah jika mengevaluasi ke nol atau string kosong, hal lain benar (variabel tidak diinisialisasi adalah nol atau string kosong, tergantung pada konteksnya, sehingga mereka salah). Kondisi atau tindakan dapat diimplikasikan; kawat gigi tanpa syarat (seperti milik Anda dimulai) dianggap memiliki kondisi sebenarnya dan selalu dieksekusi jika terkena, dan kondisi apa pun tanpa tindakan akan mencetak garis jika dan hanya jika kondisi terpenuhi.Di
1
akhir skrip Anda adalah kondisi (selalu benar) tanpa tindakan, sehingga menjalankan tindakan default untuk setiap baris, mencetak baris (yang mungkin telah dimodifikasi oleh tindakan sebelumnya di kurung kurawal).sumber
Saya sangat tidak suka cara pintas jenis ini karena mengaburkan dan menyesatkan bagaimana itu diurai. Ketika Anda membaca sesuatu seperti
awk -F"=" '{OFS="=";gsub(",",";",$2)}1'
, Anda mungkin berpikir bahwa1
itu mengubah pernyataan sebelumnya. Atau Anda mungkin berpikir1
adalah alias untuk{print}
, yang secara teknis tidak benar.Sebenarnya,
1
adalah pernyataan yang sepenuhnya terpisah. Anda dapat memisahkan pernyataan seperti ini:Setiap format pernyataan awk adalah
condition {action}
. Jika tidak ada yang{action}
diberikan, maka tindakan standarnya adalah{print}
. (Jika tidak ada yangcondition
diberikan, maka kondisi default adalahtrue
.)Jadi di sini,
1
adalah kondisi, yang selalu dievaluasitrue
karena bukan nol. Ituaction
dihilangkan, jadi default{print}
dilakukan. Anda bisa memikirkannya seperti ini:sumber
1
artinya mencetak setiap baris.Pernyataan awk sama dengan menulis:
sumber