我有一個範圍,其符合以下兩個patters之一串:SED正則表達式提取
("string with spaces",4)
或 (string_without_spaces,4)
我需要通過bash命令提取「串」,和到目前爲止,已經找到了適用於每種模式的模式,但兩者都不適用。
echo "(\"string with spaces\",4)" | sed -n 's/("\(.*\)",.*)/\1/ip'
輸出:string with spaces
echo "(string_without_spaces,4)" | sed -n 's/(\(.*\),.*)/\1/ip'
輸出:
:string_without_spaces
我一直在使用"\?
但它不匹配"
如果是有企圖echo "(SIM,0)" | sed -n 's/("\?\(.*\)"\?,.*)/\1/ip'
輸出:SIM
echo "(\"SIM\",0)" | sed -n 's/("\?\(.*\)"\?,.*)/\1/ip'
輸出:SIM"
任何人都可以建議將提取這兩種情況下字符串的模式?我沒有綁定到sed,但寧願不必在此環境中安裝perl。