sed、ファイル[重複]のすべてのコメントを削除する

sed、ファイル[重複]のすべてのコメントを削除する

次のようにファイルからコメントを削除するsedコマンドがあります。

sed -i /^#/d /path/to/file

これは機能しますが、コメントが空白にインデント/前にある場合は機能しません。

良い

#this is a good comment           ---- works
    #this is an indented comment  ---- doesn't work

最初に見える文字で#を含む行を削除するにはどうすればよいですか?

答え1

先行スペースを許可するように正規表現を変更してください。

sed -e '/^[ \t]*#/d'

この正規表現は、ゼロ個以上の空白またはタブ(順序は関係ありません)で始まり、その後にポンド記号が続く行と一致します。

GNU sedはシンボル名もサポートしています:

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

これには、興味深いUnicode外国語文字を含むすべての空白文字が含まれます。しかし、これは移植性が低下します。

答え2

努力する

sed -i -e '/^[ \t]*#/d' /path/to/file

\ tをリテラルタブ文字に置き換える必要があるかもしれません。

答え3

あなたはできます:

sed '/^[[:blank:]]*#/d' file.txt

使用grep:

grep -v '^[[:blank:]]*#' file.txt

答え4

使用:

sed '/^\s*#/d'

説明する:

^ beginning of line
\s* arbitrary amount of whitespace (or none)

関連情報