GNU/Linux >> Belajar Linux >  >> Linux

Hapus baris ganjil atau genap dari file teks

Ini mungkin berhasil untuk Anda (GNU dan non-GNU sed):

 sed -n 'p;n' file # keep odd
 sed -n 'n;p' file # keep even

-n :menekan pencetakan

p :cetak baris saat ini

n :baris berikutnya


Menggunakan GNU sed:

sed -i '0~2d' filename

untuk menghapus baris bernomor genap dari file.

Untuk menghapus baris bernomor ganjil:

sed -i '1~2d' filename

-i opsi akan menyebabkan perubahan disimpan ke file di tempat.

Mengutip dari manual:

`FIRST~STEP'
     This GNU extension matches every STEPth line starting with line
     FIRST.  In particular, lines will be selected when there exists a
     non-negative N such that the current line-number equals FIRST + (N
     * STEP).  Thus, to select the odd-numbered lines, one would use
     `1~2'; to pick every third line starting with the second, `2~3'
     would be used; to pick every fifth line starting with the tenth,
     use `10~5'; and `50~0' is just an obscure way of saying `50'.

aduh

% adalah operator modulus dan NR adalah nomor baris saat ini, jadi NR%2==0 benar hanya untuk garis genap dan akan menjalankan aturan default untuknya ({ print $0 } ). Jadi untuk hanya menyimpan garis genap , alihkan output dari awk ke file baru:

awk 'NR%2==0' infile > outfile

sed

Anda dapat melakukan hal yang sama dengan sed . devnulls jawaban menunjukkan bagaimana melakukannya dengan GNU sed .Di bawah ini adalah alternatif untuk versi sed yang tidak memiliki ~ operator:

pertahankan garis ganjil

sed 'n; d' infile > outfile

pertahankan garis genap

sed '1d; n; d' infile > outfile

Linux
  1. Bagaimana Cara Menghapus Garis Duplikat Di Dalam File Teks?

  2. Bagaimana Cara Menghapus "Data biner" Dari File Teks (mis. Bash_history)?

  3. Menghapus Baris Tertentu dari File di Baris Perintah Linux

  1. Bagaimana cara menghapus baris baru dari file teks?

  2. Bagaimana cara menghapus garis yang muncul pada file B dari file A lainnya?

  3. Temukan dan ganti teks dalam file di antara rentang baris menggunakan sed

  1. Bagaimana Menghapus Baris Kosong Dari File (termasuk Tab Dan Spasi)?

  2. Hapus Beberapa Baris Pertama Secara Efisien Dari File Teks?

  3. Hapus dua baris terakhir dari file teks yang sangat besar secara efisien