Saya ingin menghapus semua baris kosong dari file. Bahkan jika garis tersebut mengandung spasi atau tab, itu juga harus dihapus.
sumber
Saya ingin menghapus semua baris kosong dari file. Bahkan jika garis tersebut mengandung spasi atau tab, itu juga harus dihapus.
Hanya grep
untuk yang tidak kosong:
grep '[^[:blank:]]' < file.in > file.out
[:blank:]
, rentang karakter di dalam ( [...]
), disebut kelas karakter POSIX. Ada beberapa seperti [:alpha:]
, [:digit:]
... yang [:blank:]
cocok dengan spasi putih horizontal (di lokal POSIX, itu adalah ruang dan tab, tetapi di lokal lain mungkin ada lebih banyak, seperti semua karakter jarak horizontal Unicode di lokal UTF8) sementara [[:space:]]
mencocokkan putih horizontal dan vertikal. karakter spasi (sama seperti [:blank:]
plus hal-hal seperti tab vertikal, umpan form ...).
grep '[:blank:]'
Akan mengembalikan baris yang berisi salah satu karakter, :
, b
, l
, a
, n
atau k
. Kelas karakter hanya dikenali di dalam [...]
, dan di ^
dalam [...]
meniadakan set. Jadi [^[:blank:]]
berarti setiap karakter kecuali yang kosong.
$
akhir?[^[:blank:]]$
hanya akan cocok dengan garis yang berakhir dengan non-kosong. Kami ingin garis yang berisi non-kosong di mana sajagrep -E '\S'
tidak akan berfungsi?Ini
awk
solusinya:Dengan
awk
,NF
hanya diatur pada garis yang tidak kosong. Ketika kondisi ini cocok,awk
tindakan default yaituprint
akan mencetak seluruh baris.sumber
Bagaimana tentang:
atau
yaitu
Untuk setiap baris, gantikan:
^
")[[:blank:]]
") nol atau lebih banyak kali ("*
")$
")Info lebih lanjut tentang :: blank :: dan karakter khusus lainnya di http://www.zytrax.com/tech/web/regex.htm#special
sumber
[[:space:]]
termasuk tab. Jika tidak, regex Anda akan gagal jika spasi mengikuti tab.wctype(3)
danisalpha(3)
manual menggambarkan apa yang akan cocok dengan kelas karakter.Anda dapat menggunakan
sed
perintah untuk menghapus baris kosong:Perintah ini menghapus semua baris kosong dari file "in"
sumber
Sepertinya saya sudah menemukan yang tidak secepat itu, tapi lucu akhirnya:
| xargs -L1
sumber
Coba ex -way:
Untuk banyak file (edit di tempat):
Catatan:
:bufdo
Perintah ini bukan POSIX .Tanpa memodifikasi file (cukup cetak pada output standar):
sumber
Gunakan perintah berikut:
yang menghapus semua baris termasuk spasi atau tab.
Jika tidak, penghapusan tidak termasuk garis dengan spasi / tab, gunakan:
Sebagai contoh:
Lihat juga:
sed
: Hapus baris kosong menggunakan sedawk
: Hapus garis kosong menggunakan awksumber