Löschen Sie Zeilen, die mit # beginnen


10

Wie lösche ich Zeilen, die mit a beginnen #, da links und rechts von Leerzeichen Leerzeichen stehen können #?

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

Antworten:


13

Das scheint zu funktionieren, aber ich habe nicht tief darüber nachgedacht:

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

10

Sie können verwendet werden grepfür die

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

Da Sie, wie ich vermute, Kommentare aus einer Datei entfernen, können Sie auch Leerzeilen entfernen, wodurch Folgendes erweitert wird:

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

3

awk Die Lösung besteht darin, die Übereinstimmung mit Ihrem Muster umzukehren.

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

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

4
Keine Notwendigkeit, dem Leerzeichen zu entkommen, keine Notwendigkeit, das Leerzeichen zu erfassen, keine Notwendigkeit, die Standardaktion anzugeben : awk '!/^ *#/' ./text.
Manatwork

awk '/^ *#/{next}1' filesollte gut genug sein.
Jaypal Singh


0

Verwendung der von ДМИТРИЙ МАЛИКОВ ...

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

Ich bevorzuge die Verwendung von pcre mit grep, daher verwende ich den Schalter -P für grep (muss GNU grep sein). Der zweite Grep ist reiner Zucker, um Ihnen die Wörter ohne Leerzeichen zu geben. Es würde auch leere Zeilen "entfernen".


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

Das ist nicht gut - löscht keine Zeilen und löscht Zeilen wiea#b
Mat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.