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. awk '/^ *#/{next}1' file should be good enough. 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 a#b