#
の左右に空白が存在する可能性がある場合、#
で始まる行を削除するにはどうすればよいですか?
# Master socket provides access to userdb information. It's typically
これはうまくいくようですが、私はそれについて深く考えていません:
sed -e '/^[[:space:]]*#/d'
そのためにgrep
を使用できます
grep -vh '^[[:space:]]*#' filename
私が推測するように、あなたはいくつかのファイルからコメントを取り除いているので、空の行を削除することも検討するかもしれません。これは上記を次のように展開します。
grep -vh '^[[:space:]]*\(#\|$\)' filename
awk
の解決策は、パターンのマッチングを反転することです。
$> cat ./text
elephant
# Master socket provides access to userdb information. It's typically
Zoo
#ok
penguin
# !
$> awk '!/^(\ )*#/ {print $0}' ./text
elephant
Zoo
penguin
ДМИТРИЙМАЛИКОВによって投稿されたサンプルデータを使用して...
$ grep -vPh '^\s*#' filename.txt | grep -Po '\w+'
elephant
Zoo
penguin
私はgrepでpcreを使用することを好むので、grepに-Pスイッチを使用します(GNU grepである必要があります)。2番目のgrepは、空白のない単語を提供するための純粋な砂糖です。また、空の行を「削除」します。
Perl -ne 'print if ! /^\s*#/' ./text