использование set для извлечения совпавшего шаблона с использованием 'в качестве разделителя шаблонов - PullRequest
0 голосов
/ 01 марта 2011

Я просто не могу разобраться с соответствием шаблона в 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 выполнит работу, но понятия не имею, как ... Спасибо за любую помощь ... Всего наилучшего, Андре

Ответы [ 3 ]

0 голосов
/ 01 марта 2011

Вы можете рассмотреть 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 голосов
/ 01 марта 2011

Попробуйте:

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
0 голосов
/ 01 марта 2011

Ваш вопрос немного двусмысленный, но это должно сделать то, что, я думаю, вы имеете в виду:

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