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
で十分ですが、特定の正規表現を含む一部の行でのみコメントを削除する必要がある場合は、条件付きアドレスを使用できます。
sed '/regex/s/^# //' file
したがって、 を含むすべての行はコメント解除regex
されます(行がで始まる場合)#
...次のregex
ようになります[0-9]
。
sed '/[0-9]/s/^# //' file
#
数字を含むすべての行の先頭で削除するか、または
sed '/[0-9]/s/^# \?//' file
最初のスペースを不要にする: #one two 12
、または
sed '/[0-9]$/s/^# //' file
#
最後の文字として数字を含む行の先頭を削除します。それで
sed '/12$/s/^# //' file
#
で終わる行の先頭で削除されます12
。または
sed '/\b\(two\|three\)\b/s/^# //' file
wordまたは#
を含む行の先頭を削除します。 two
three
sed -e 's/^#\s*\(.*[0-9].*\)$/\1/g' filename
するべきです。
数字を含むコメントなしの行のみが必要な場合は、次を使用できます。
sed -e 's/^#\s*\(.*[0-9]+.*\)/\1/g' file
次のsed
コマンドは、数字を含む行のコメントを解除します。
sed 's/^#\s*\(.*[0-9]\+.*$\)/\1/g' file
-i
それぞれのファイルの置換オプションは必要ありませんか? #
次を使用して先頭を削除します。
sed -i "s/^# \(.*\)/\1/g" file
少なくとも 1 つの数字のシーケンスで終わるコメント行のみをコメント解除するには、次のように使用します。
sed -i "s/^# \(.*[[:digit:]]\+$\)/\1/g" file
このソリューションでは、コメント行を 1 つのスペース文字 ( のすぐ後ろ#
) で開始する必要がありますが、該当しない場合は簡単に調整できます。
私はこれを見つけた。あなた方全員に感謝します
echo "# one two 12" | grep "[0-9]" | sed 's/# //g'
また
cat file | grep "[0-9]" | sed 's/# //g'