Saya menjalankan perintah berikut:
grep -o "[0-9] errors" verification_report_3.txt | awk '{print $1}'
dan saya mendapatkan hasil berikut:
1
4
0
8
Saya ingin menambahkan masing-masing angka hingga variabel penghitungan berjalan. Apakah ada satu kapal ajaib yang bisa saya bantu buat?
variable=$(grep -o "[0-9] errors" verification_report_3.txt | awk '{ SUM += $1} END { print SUM }')
Ini menempatkan output dari perintah (yang hanya nilai penjumlahan) ke dalam variabel yang disebutvariable
"[0-9]\+ errors"
. Ini akan cocok jika Anda memiliki pelaporan garis> 9 kesalahan.Ini semua bisa dilakukan dengan awk juga:
sumber
Anda tampaknya menggunakan sistem GNU , jadi jika Perl dukungan ekspresi reguler tersedia, Anda dapat menulis sesuatu seperti ini:
PS Saya mengubah ekspresi reguler (menambahkan + quantifier) untuk memungkinkan angka> 9.
PS Atau, awk sudah cukup (dengan asumsi GNU awk ):
sumber
Coba perpipkan output dari grep Anda
sumber
Saya menggunakan ini:
Ini tidak efisien untuk daftar besar, tetapi untuk sebagian besar kasus penggunaan saya baik-baik saja. Saya biasanya menggunakan fungsi shell untuk mengotomatiskan proses sehingga saya hanya perlu memberikan nama file:
Anda selalu dapat mengganti penanda garis akhir untuk pemisah elemen tertentu atau kelas karakter jika data Anda dibatasi dengan cara lain.
sumber