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
chris4000
sumber

Jawaban:

13

Ini sepertinya berhasil, tapi saya belum memikirkannya:

sed -e '/^[[:space:]]*#/d'
Ulrich Schwarz
sumber
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
rozcietrzewiacz
sumber
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
ДМИТРИЙ МАЛИКОВ
sumber
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
perl -ne 'print if ! /^\s*#/' ./text
Peter John Acklam
sumber
hai @ Peter-john-acklam, apakah ini akan berfungsi ketika kode diikuti oleh # komentar?
Nikhil Mulley
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.

Jim
sumber
-1
$ perl -pi -e '$_="" if /^\s*#/' filename
Zaid
sumber
Itu tidak bagus - tidak menghapus baris, dan menghapus baris sepertia#b
Mat