Sedを使用して正規表現を使用してファイルコンテンツのコメントを解除しようとしています(例:[0-9] {1,5})
# one two 12
# three four 34
# five six 56
以下が機能しています:
sed -e 's/# one two 12/one two 12/g' /file
しかし、私が望むのは、正規表現パターンを使用して、数字を入力せずにすべての一致を置換し、結果に数字を保持することです。
サンプルの質問に準拠するには、単に
sed 's/^# //' file
十分ですが、特定の正規表現を含む一部の行でのみコメントを削除する必要がある場合は、条件付きのaddressを使用できます。
sed '/regex/s/^# //' file
したがって、regex
を含むすべての行はuncomented(if linebegin#
)
... regex
は[0-9]$
のようになります:
sed '/[0-9]$/s/^# //' file
最後の文字として数字を含む行の先頭の#
を削除します。
sed -e 's/^#\s*\(.*[0-9].*\)$/\1/g' filename
それを行う必要があります。
番号を含む行のコメントを外したい場合は、これを使用できます。
sed -e 's/^#\s*\(.*[0-9]+.*\)/\1/g' file
それぞれのファイルで置換するための-i
オプションは不要ですか?次を使用して、先頭の#
を削除します。
sed -i "s/^# \(.*\)/\1/g" file
少なくとも1桁のシーケンスで終わるコメント行のみのコメントを解除するには、次のように使用します。
sed -i "s/^# \(.*[[:digit:]]\+$\)/\1/g" file
このソリューションでは、1つのスペース文字(#
の直後)で始まるコメント行が必要ですが、該当しない場合は簡単に調整できるはずです。
次のsed
コマンドは、数字を含む行のコメントを解除します。
sed 's/^#\s*\(.*[0-9]\+.*$\)/\1/g' file