sed 式による置換

sed 式による置換

次のような値を取得しようとしています

"909,999"

これにより(例では何も置き換えていません):

sed 's/["][0-9]+[,][0-9]+["]//g'

しかし、それは機能しません。

答え1

パターンを置き換えたい場合は、@Kusalananda の提案に従って文字を使用しsed -Eたりエスケープしたりできます。+

$ printf '"123.456"\n"909,999"\n"100"\n' | sed -E 's/"[0-9]+,[0-9]+"//g'
"123.456"

"100"

または

$ printf '"123.456"\n"909,999"\n"100"\n' | sed 's/"[0-9]\+,[0-9]\+"//g'
"123.456"

"100"

gこの例では、行ごとに置換が 1 つしかないため、 は必要ないことに注意してください。


一致する行を削除したい場合は、dパターンスペースを削除するために次のように使用できます。

$ printf '"123.456"\n"909,999"\n"100"\n' | sed '/"[0-9]\+,[0-9]\+"/d'
"123.456"
"100"

関連情報