#で始まる行を削除する


10

#の左側と右側に空白がある可能性があることを前提に、で始まる行を削除するにはどうすればよい#ですか?

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

回答:



10

grepそのために使用できます

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

私が想定しているように、一部のファイルからコメントを削除しているので、空行を削除することも検討できます。

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

3

awk 解決策は、パターンのマッチングを反転させることです。

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

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

4
スペース文字をエスケープする必要も、スペース文字をキャプチャする必要も、デフォルトのアクションを指定する必要もありませんawk '!/^ *#/' ./text
manatwork

awk '/^ *#/{next}1' file十分良いはずです。
ジェイパルシン11/12/23


0

byМАЛИКОВが投稿したサンプルデータを使用する...

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

私はgcreでpcreを使用することを好むので、grepには-Pスイッチを使用します(GNU grepでなければなりません)。2番目のgrepは、空白を含まない単語を表す純粋な砂糖です。また、空の行を「削除」します。


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

それは良くない-行を削除せず、行をクリアするa#b
Mat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.