2013-11-29 3 views
0

Я хочу передать эту команду в моем сценарии:
sed -n -e "/Next</a></p>/,/Next</a></p>/ p" file.txt
Эта команда (должна) извлечь весь текст между двумя согласованными узорами, которые в моем случае как Next</a></p>. Однако, когда я запускаю свой скрипт, я продолжаю получать ошибки. Я пробовал:
sed -n -e "/Next\<\/a\>\<\/p\>/,/Next<\/a\>\<\/p>/ p" file.txt не повезло.Как пройти специальные символы через СЭД

Я считаю, что общий шаблон для этой команды заключается в следующем:
sed -n -e "/pattern1/,/pattern2/ p" file.txt
Я не могу заставить его работать на Next</a></p>, хотя и я предполагаю, что это что-то делать со специальными символами я облицовками. Есть ли способ пройти Next</a></p> в команде sed? Спасибо заранее, ребята! Это сообщество потрясающее!

+0

Команда, которую вы отправили, даже если исправлена, не будет извлекать текст между двумя сопоставленными шаблонами. Расскажите нам, что вы действительно пытаетесь сделать с помощью ввода данных и ожидаемого результата, и мы можем поставить вас на правильный путь. –

ответ

2

Вам не нужно использовать / как регулярное выражение разделитель. Использование другого символа будет немного упростить котировки. Синтаксис

\cregexc

где c может быть любой символ (кроме \), которые вы не используете в регулярных выражениях. В этом случае, : может быть хорошим выбором:

sed -n -e '\:Next</a></p>:,\:Next</a></p>: p' file.txt 

Обратите внимание, что я изменил " к ', потому что в двойных кавычках, \ будет интерпретироваться Баш как экранирующий символ, в то время как в одинарных кавычках \ просто рассматриваются как обычный символ Следовательно, вы могли бы написать версию с сбежавшими косыми чертами, как это:.

sed -n -e '/Next<\/a><\/p>/,/Next<\/a><\/p>/ p' file.txt 

, но я думаю, что версия с двоеточиями (немного) легче читать.

+0

+1, это лучше – iruvar

+0

Большое спасибо! Я многому учу от вас, ребята! – CrudeCoder

0

Вам нужно бежать вперед косые черты внутри регулярных выражений с \, поскольку слэша служат в качестве разделителей для регулярных выражений

sed -n -e '/Next<\/a><\/p>/,/Next<\/a><\/p>/p' file.txt 
Смежные вопросы