Elimina le righe che iniziano con #


10

Come posso eliminare le righe che iniziano con a #, dato che possono esserci spazi bianchi a sinistra e a destra di #?

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

Risposte:


13

Questo sembra funzionare, ma non ci ho pensato molto:

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

10

Puoi usarlo grepper questo

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

Poiché, come presumo, stai eliminando i commenti da alcuni file, potresti anche prendere in considerazione la rimozione di righe vuote, che espande quanto sopra a:

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

3

awk la soluzione è di invertire la corrispondenza con il modello.

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

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

4
Non c'è bisogno di sfuggire il carattere di spazio, non c'è bisogno di catturare il carattere di spazio, non c'è bisogno di specificare l'azione predefinita: awk '!/^ *#/' ./text.
arte

awk '/^ *#/{next}1' filedovrebbe essere abbastanza buono.
jaypal singh,


0

Utilizzando i dati di esempio pubblicati da ДМИТРИЙ МАЛИКОВ ...

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

Preferisco usare pcre con grep, quindi uso l'opzione -P per grep (deve essere GNU grep). Il secondo grep è lo zucchero puro per darti le parole senza spazi bianchi. "Rimuovere" anche le righe vuote.


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

Non va bene - non cancella le linee e cancella le righe comea#b
Mat
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.