How do I delete lines beginning with a #
, given that there can be whitespace on the left and right of the #
?
# Master socket provides access to userdb information. It's typically
This seems to work, but I've not given deep thought to it:
sed -e '/^[[:space:]]*#/d'
You can use grep
for that
grep -vh '^[[:space:]]*#' filename
Since, as I presume, you are stripping comments from some file, you might also consider removing empty lines, which expands the above to:
grep -vh '^[[:space:]]*\(#\|$\)' filename
awk
solution is to invert matching your pattern.
$> cat ./text
elephant
# Master socket provides access to userdb information. It's typically
zoo
#ok
penguin
# !
$> awk '!/^(\ )*#/ {print $0}' ./text
elephant
zoo
penguin
awk '!/^ *#/' ./text
.
Nov 28, 2011 at 15:42
perl -ne 'print if ! /^\s*#/' ./text
Using the sample data posted by ДМИТРИЙ МАЛИКОВ...
$ grep -vPh '^\s*#' filename.txt | grep -Po '\w+'
elephant
zoo
penguin
I prefer using pcre with grep so I use the -P switch for grep (must be GNU grep). The second grep is pure sugar to give you the words with no white-space. It would also "remove" empty lines.
$ perl -pi -e '$_="" if /^\s*#/' filename