Я хочу извлечь строку между данным маркером из файла, в моем случае это между %. Я выделил строки жирным шрифтом ниже.
Содержание:
Update DIMENSIONPARAMETER set TEXTVALUE='http://%arm.se.host%:%arm.se.wls.listen.port%/CramerOSS/SyncEngineServlet/SyncProcessUnPauseServlet' where NAME='SyncEngine SyncProcessUnPauseServlet';
Это также ввело, где просто %somestring % присутствует. Я хочу извлечь ту строку только.
Если все строки в файле будут структурированы как пример, я полагаю, что можно использовать программу 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
был распечатан к стандартному выводу.
Используя grep
, поскольку Вы упомянули Вас "have %string% simply present"
:
grep -o '%[^%]*%' infile
Попробуйте это.
sed -r 's/[^%]*%([^%]*)%\S*(\s)*/\1\2/g'
Его легкое для извлечения для единственного происшествия с помощью sed. Для нескольких происшествий я нашел что-то вроде этого прежде для подобной проблемы. Я не мог найти тот поток.
Хорошо, это обнаруживает первое вхождение правильно, но не второе происшествие. Не будет работать.
прекрасные работы ответа Karthik!