GNU/Linux >> Belajar Linux >  >> Linux

Cara mengurangi baris (baris) dengan AWK

Anda juga dapat melakukannya menggunakan awk , paste , dan bc . Saya menemukan pendekatan ini lebih mudah diingat, sintaks dari awk selalu meminta saya untuk mencari tahu untuk mengonfirmasi.

CATATAN: Pendekatan ini memiliki keuntungan karena dapat bersaing dengan beberapa baris keluaran, mengurangkan angka ke-2, ke-3, ke-4, dst. dari angka ke-1.

$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
    awk '{print $2}' | paste -sd- - | bc
7513404

Detail

Di atas menggunakan awk untuk memilih kolom yang berisi angka yang ingin kita kurangi.

$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
    awk '{print $2}'
7969084
408432

Kami kemudian menggunakan paste untuk menggabungkan 2 nilai nilai ini dan menambahkan tanda minus di antaranya.

$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
    awk '{print $2}'| paste -sd- -
7969084-346660

Saat kami meneruskan ini ke bc itu melakukan perhitungan.

$ grep -P 'MemTotal|MemFree' /proc/meminfo | \
    awk '{print $2}'| paste -sd- - | bc
7513404

Solusi murni awk, tidak ada perintah cat atau grep yang berlebihan:

awk '/MemTotal/ {TOT=$2} /MemFree/ {FREE=$2} END {printf("%d kB Used\n", TOT-FREE)}' /proc/meminfo

Saya melihat awk_FTW mengalahkan saya untuk itu tetapi saya pikir memformat hasilnya bisa bagus.


Coba ini:

grep -P 'MemTotal|MemFree' /proc/meminfo | \
awk 'NR==1{s=$2;next}{s-=$2}END{print s}'

Linux
  1. Bagaimana Cara Mengeluarkan File &Mengabaikan Baris Yang Dimulai Dengan "?"?

  2. sed menggabungkan garis bersama

  3. Cara menampilkan hanya baris yang berbeda menggunakan diff (bash)

  1. Bagaimana Cara Menghapus Semua Baris atau Baris yang Dikomentari dengan Pola Tertentu di vim?

  2. Bagaimana Cara Grep Garis Yang Tidak Dimulai Dengan "#" Atau ";"?

  3. Bagaimana Cara Menggunakan Awk Untuk Mencetak Hanya Garis yang Berisi 5 Kolom?

  1. Menggunakan Bungkus Kata Dengan Mc?

  2. Bagaimana cara menghitung baris dalam dokumen?

  3. Bagaimana cara mengisi file dengan FF menggunakan dd?