2017-06-07 2 views
0

Ich habe text0.txt wie eine Textdatei entfernen Kommentare folgenden # (Nummernzeichen)in der Schale

# text0.txt 
# This is comment 
Hello, I like banana. # more comments 
bra bra bra... 

Die Frage ist, was der Befehl

$ some_command text0.txt 

die

Hello, I like banana. 
bra bra bra... 

ausgibt zur Standardausgabe.

Ich benutze bash. Danke.

+0

Haben Sie versucht, dies selbst zu erforschen? – 123

+0

Danke für den Zeiger. Tatsächlich löst es das Problem. Ich hatte keine Idee, sed zu verwenden, und ich konnte "#" nicht als Schlüsselwort suchen. – ywat

+0

Ich habe gerade '' Kommentar Bash "auf google suchen. – 123

Antwort

1

mit awk:

awk '{a=length($0);gsub("#.*","",$0); if(a==0 || length($0)>0)print $0}' filename 
2

Sie möchten Zeilen löschen, die mit einem # starten und eine # und alle folgenden Zeichen irgendwoanders auf einer Linie zu entfernen. Diese Beschreibung praktisch definiert, was das sed Skript sollte folgendermaßen aussehen:

sed -e '/^#/d' -e 's/[[:space:]]*#.*//' text0.txt 

Dies entfernt alle Leerzeichen vor den # am Ende einer zu Linie. Man könnte, dass in ein Argument kombinieren, wenn Sie darauf bestehen:

sed '/^#/d; s/[[:space:]]*#.*//' text0.txt 

Ich persönlich denke, dass es einfacher ist, die einzelnen Operationen zu lesen, wenn sie in getrennten Argumente sind, aber das ist eine Wahl, die Sie für sich selbst machen können.

Beachten Sie, dass keine zwei (oder mehr) Befehle ausgeführt werden müssen. Eins ist ausreichend.

Verwandte Themen