Saya mendapatkan output dari program yang pertama kali menghasilkan satu baris yang merupakan sekumpulan header kolom, dan kemudian sekumpulan baris data. Saya ingin memotong berbagai kolom dari output ini dan melihatnya diurutkan menurut berbagai kolom. Tanpa header, pemotongan dan penyortiran dapat dilakukan dengan mudah melalui -k
pilihan untuk sort
beserta cut
atau awk
untuk melihat subset kolom. Namun, metode pengurutan ini mencampurkan header kolom dengan baris output lainnya. Apakah ada cara mudah untuk menjaga header tetap di atas?
Jawaban yang Diterima:
Mencuri ide Andy dan menjadikannya fungsi sehingga lebih mudah digunakan:
# print the header (the first line of input)
# and then run the specified command on the body (the rest of the input)
# use it in a pipeline, e.g. ps | body grep somepattern
body() {
IFS= read -r header
printf '%s\n' "$header"
"[email protected]"
}
Sekarang saya bisa melakukan:
$ ps -o pid,comm | body sort -k2
PID COMMAND
24759 bash
31276 bash
31032 less
31177 less
31020 man
31167 man
...
$ ps -o pid,comm | body grep less
PID COMMAND
31032 less
31177 less
Linux – Bagaimana Menganalisis Data Profil Dari `perf Record –a` (Koleksi seluruh sistem)?
Linux – Perintah Untuk Menjalankan Proses Anak “offline” (tanpa Jaringan Eksternal) Di Linux?