Hapus baris yang dimulai dengan #


10

Bagaimana cara menghapus baris yang dimulai dengan #, mengingat bahwa mungkin ada spasi putih di kiri dan kanan #?

  # Master socket provides access to userdb information. It's typically

Jawaban:


13

Ini sepertinya berhasil, tapi saya belum memikirkannya:

sed -e '/^[[:space:]]*#/d'

10

Anda bisa menggunakannya grepuntuk itu

grep -vh '^[[:space:]]*#' filename

Karena, seperti yang saya duga, Anda menghapus komentar dari beberapa file, Anda mungkin juga mempertimbangkan untuk menghapus baris kosong, yang memperluas hal di atas ke:

grep -vh '^[[:space:]]*\(#\|$\)' filename

3

awk solusinya adalah membalikkan pencocokan pola Anda.

$> cat ./text
elephant
# Master socket provides access to userdb information. It's typically
zoo
 #ok
penguin
# !

$> awk '!/^(\ )*#/ {print $0}' ./text
elephant
zoo
penguin

4
Tidak perlu untuk melarikan diri karakter spasi, tidak perlu untuk menangkap karakter spasi, tidak perlu menentukan tindakan default: awk '!/^ *#/' ./text.
manatwork

awk '/^ *#/{next}1' fileharus cukup baik.
jaypal singh


0

Menggunakan data sampel yang diposkan oleh ДМИТРИЙ МАЛИКОВ ...

$ grep -vPh '^\s*#' filename.txt | grep -Po '\w+'
elephant
zoo
penguin

Saya lebih suka menggunakan pcre dengan grep jadi saya menggunakan -P untuk grep (harus grep GNU). Grep kedua adalah gula murni untuk memberi Anda kata-kata tanpa spasi putih. Itu juga akan "menghapus" baris kosong.


-1
$ perl -pi -e '$_="" if /^\s*#/' filename

Itu tidak bagus - tidak menghapus baris, dan menghapus baris sepertia#b
Mat
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.