GNU/Linux >> Belajar Linux >  >> Linux

Hapus baris kosong menggunakan sed

Anda mungkin memiliki spasi atau tab di baris "kosong" Anda. Gunakan kelas POSIX dengan sed untuk menghapus semua baris yang hanya berisi spasi putih:

sed '/^[[:space:]]*$/d'

Versi lebih pendek yang menggunakan ERE, misalnya dengan gnu sed:

sed -r '/^\s*$/d'

(Perhatikan bahwa sed TIDAK mendukung PCRE.)


Saya kehilangan awk solusi:

awk 'NF' file

Yang akan mengembalikan:

xxxxxx
yyyyyy
zzzzzz

Bagaimana cara kerjanya? Sejak NF singkatan dari "jumlah bidang", baris yang kosong memiliki 0 bidang, sehingga awk mengevaluasi 0 hingga Salah dan tidak ada baris yang dicetak; namun, jika ada setidaknya satu kolom, evaluasinya adalah True dan menghasilkan awk melakukan tindakan standarnya:cetak baris saat ini.


sed

  • '/^[[:space:]]*$/d'
  • '/^\s*$/d'
  • '/^$/d'
  • -n '/^\s*$/!p'

grep

  • .
  • -v '^$'
  • -v '^\s*$'
  • -v '^[[:space:]]*$'

aduh

  • /./
  • 'NF'
  • 'length'
  • '/^[ \t]*$/ {next;} {print}'
  • '!/^[ \t]*$/'

sed '/^$/d' harus baik-baik saja, apakah Anda mengharapkan untuk memodifikasi file di tempat? Jika demikian, Anda harus menggunakan -i bendera.

Mungkin baris tersebut tidak kosong, jadi jika demikian, lihat pertanyaan ini Hapus baris kosong dari file txt, hapus spasi dari awal dan akhir baris. Saya yakin itulah yang ingin Anda capai.


Linux
  1. Mengganti Kata Atau Angka Dalam Kalimat Yang Kurang Dari 8 Menggunakan Awk Atau Sed?

  2. Bagaimana Cara Menghapus Beberapa Baris Acak Dari File Teks Menggunakan Sed?

  3. Menggunakan Bungkus Kata Dengan Mc?

  1. Bagaimana Cara Menghapus N Baris Pertama Dari File Ascii Menggunakan Perintah Shell?

  2. sed menggabungkan garis bersama

  3. Hapus karakter tertentu menggunakan awk atau sed

  1. Hapus spasi putih di setiap awal baris file, menggunakan bash

  2. Bagaimana cara menggunakan sed untuk menghapus hanya dua baris kosong?

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