Text-Processing
僅用 sed 或 awk 替換雙引號之間的字元
我在 CSV 文件中有這樣一個場景:
ID,PRICE,QUANTITY,ARRIVAL 01299,"41,5",1,0 26528,"412,03",0,0 38080,"2,35",0,0 38081,"2,35",0,0 .. ..
我問自己的問題是:如何
,
用, 但僅在列中用.
雙引號括起來的價格替換?"..."``PRICE
我試過了
sed -i 's/\(,\)[^ ]*\( .*\)/\1"."\2/'
但是沒有成功,你能給我一個小費嗎?
我建議使用 sed 的“-E”選項來擴展正則表達式。如果引號之間只有數字,則可以執行以下操作:
~ $ cat foo lorem, ipsum "5,25", foobar "foo,bar", foobar ~ $ cat foo | sed -E 's/"([0-9]+)\,([0-9]+)"/"\1.\2"/g' lorem, ipsum "5.25", foobar "foo,bar", foobar
如果引號中有大寫和小寫字母,則可以像這樣擴展正則表達式:
~ $ cat foo | sed -E 's/"([0-9]+|[a-z]+|[A-Z]+)\,([0-9]+|[a-z]+|[A-Z]+)"/"\1.\2"/g' lorem, ipsum "5.25", foobar "foo.bar", foobar
您可以在 regex101.com 上輕鬆測試您的正則表達式:另請參閱:https ://regex101.com/r/mlfSMp/1