GNU/Linux >> Belajar Linux >  >> Linux

Urutkan Tapi Pertahankan Baris Header Di Atas?

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
  1. Menghitung Karakter Setiap Baris Dengan Wc?

  2. Hapus Baris Berturut-turut Dalam Csv Dengan Nilai Duplikat Dalam Satu Bidang, Tapi Pertahankan Baris Terakhir?

  3. Bagaimana cara membagi file dan menyimpan baris pertama di setiap bagian?

  1. Diurutkan dengan sort di baris perintah

  2. Bagaimana cara memulai program linux GUI dari baris perintah, tetapi terpisah dari baris perintah?

  3. Apa itu pengguna debian-+?

  1. Miliki sapi di baris perintah Linux

  2. Masukkan diri Anda ke dalam baris perintah Linux

  3. Penggunaan lanjutan dari penampil file teks yang lebih sedikit di Linux