27

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

ただし、正規表現パターンを使用して、数字を入力せずにすべての一致を置き換え、結果に数字を保持することをお勧めします。

4

6 に答える 6

25

サンプルの質問に準拠するには、単に

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または# を含む行の先頭を削除します。 twothree

于 2012-12-28T19:44:13.183 に答える
9
sed -e 's/^#\s*\(.*[0-9].*\)$/\1/g' filename

するべきです。

于 2012-12-28T16:31:55.743 に答える
1

数字を含むコメントなしの行のみが必要な場合は、次を使用できます。

sed -e 's/^#\s*\(.*[0-9]+.*\)/\1/g' file
于 2012-12-28T16:49:26.740 に答える
0

次のsedコマンドは、数字を含む行のコメントを解除します。

sed 's/^#\s*\(.*[0-9]\+.*$\)/\1/g' file
于 2012-12-28T16:48:33.573 に答える
0

-iそれぞれのファイルの置換オプションは必要ありませんか? #次を使用して先頭を削除します。

sed -i "s/^# \(.*\)/\1/g" file

少なくとも 1 つの数字のシーケンスで終わるコメント行のみをコメント解除するには、次のように使用します。

sed -i "s/^# \(.*[[:digit:]]\+$\)/\1/g" file

このソリューションでは、コメント行を 1 つのスペース文字 ( のすぐ後ろ#) で開始する必要がありますが、該当しない場合は簡単に調整できます。

于 2012-12-28T20:55:46.377 に答える
-1

私はこれを見つけた。あなた方全員に感謝します

echo "# one two 12" | grep "[0-9]" | sed 's/# //g'

また

cat file | grep "[0-9]" | sed 's/# //g'
于 2012-12-30T19:25:56.510 に答える