Извлечение Строки между данным маркером

Я хочу извлечь строку между данным маркером из файла, в моем случае это между %. Я выделил строки жирным шрифтом ниже.

Содержание:

Update DIMENSIONPARAMETER set TEXTVALUE='http://%arm.se.host%:%arm.se.wls.listen.port%/CramerOSS/SyncEngineServlet/SyncProcessUnPauseServlet' where NAME='SyncEngine SyncProcessUnPauseServlet';

Это также ввело, где просто %somestring % присутствует. Я хочу извлечь ту строку только.

0
задан 24 May 2018 в 10:25

3 ответа

Если все строки в файле будут структурированы как пример, я полагаю, что можно использовать программу cut командной строки, чтобы рассматривать знаки процента как разделители полей и выбрать 2 <глоток> без обозначения даты и 4 <глоток> th поля. Так попытайтесь работать

cut -d "%" -f 2,4 --output-delimiter="," <file_name

Обновление: Я не думаю, что что-либо должно быть изменено для другого формата, потому что в шаблоне %string% команда выше рассматривает string как второе поле и извлекает его. Я пытался работать

echo "%string%" | cut -d "%" -f 2,4 --output-delimiter=","

, и string был распечатан к стандартному выводу.

0
ответ дан 14 April 2019 в 19:57

Используя grep, поскольку Вы упомянули Вас "have %string% simply present" :

grep -o '%[^%]*%' infile
0
ответ дан 14 April 2019 в 19:57

Попробуйте это.

sed -r 's/[^%]*%([^%]*)%\S*(\s)*/\1\2/g'

Его легкое для извлечения для единственного происшествия с помощью sed. Для нескольких происшествий я нашел что-то вроде этого прежде для подобной проблемы. Я не мог найти тот поток.

Хорошо, это обнаруживает первое вхождение правильно, но не второе происшествие. Не будет работать.

прекрасные работы ответа Karthik!

0
ответ дан 14 April 2019 в 19:57

Другие вопросы по тегам:

Похожие вопросы: