Usuń linie zaczynające się od #


10

Jak usunąć linie zaczynające się od a #, biorąc pod uwagę, że po lewej i prawej stronie mogą znajdować się białe znaki #?

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

Odpowiedzi:



10

Możesz grepdo tego użyć

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

Ponieważ, jak przypuszczam, usuwasz komentarze z jakiegoś pliku, możesz również rozważyć usunięcie pustych linii, co rozszerza powyższe do:

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

3

awk rozwiązaniem jest odwrócenie pasujące do wzorca.

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

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

4
Nie ma potrzeby, aby uciec znak spacji, nie ma potrzeby, aby uchwycić znak spacji, nie ma potrzeby, aby określić domyślne działanie: awk '!/^ *#/' ./text.
manatwork

awk '/^ *#/{next}1' filepowinno być wystarczająco dobre.
jaypal singh


0

Korzystanie z przykładowych danych opublikowanych przez ДМИТРИЙ МАЛИКОВ ...

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

Wolę używać pcre z grep, więc używam przełącznika -P dla grep (musi to być GNU grep). Drugi grep to czysty cukier, który daje ci słowa bez białych znaków. Spowodowałoby to również „usunięcie” pustych linii.


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

To nie jest dobre - nie usuwa linii i usuwa linie takie jaka#b
Mat
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.