次のようにファイルからコメントを削除する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)