2011-03-01 59 views
0

我只是沒有得到我的頭在模式匹配在sed,更糟糕的是,有報價作爲分隔符。使用集提取匹配的模式使用'作爲模式分隔符

我做的:

cat file | grep \'*.s\' 

,並得到:

'PhaseRayA:  '  'sca/sca_out/sc_ray_a.s' 
'PhaseRayO:  '  'sca/sca_out/sc_ray_o.s' 

作爲輸出。一個現在我想提取:

sca/sca_out/sc_ray_a 
sca/sca_out/sc_ray_o.s.s 

所以我的模式是「* .S」,用引號是模式的一部分,但不是想要的結果的一部分。

有關於此的任何想法?我猜sed會幹這份工作,但不知道如何... 感謝您的幫助... 一切順利,André

回答

0

您的問題有點含糊不清,但這應該做我認爲你的意思:

sed -e "s/'[^']*' *'//" -e "s/'//" file 
0

你可能要考慮AWK:

$ cat test.txt 
'PhaseRayA:  '  'sca/sca_out/sc_ray_a.s' 
'PhaseRayO:  '  'sca/sca_out/sc_ray_o.s' 

$ awk -F "'" '{print $4}' test.txt 
sca/sca_out/sc_ray_a.s 
sca/sca_out/sc_ray_o.s 

我傾向於使用sed來編輯文件和awk來處理它們。 awk是爲打破記錄而建立的。

0

這給一試:

sed "s/.*'\([^']*\)'/\1/" inputfile 

同理:

sed 's/.*\o47\([^\o47]*\)\o47/\1/' inputfile # that's the letter "o" between the backslash and the 4 

sed 's/.*\x27\([^\x27]*\)\x27/\1/' inputfile