sed только печатает подстроку в строке - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь получить подстроку в строке, которая находится в большой строке данных.Регулярное выражение (INC ............) соответствует подстроке, которую я пытаюсь получить в https://regexr.com/,, но я не могу получить значение подстроки в переменную илираспечатайте его.

Часть строки вокруг этого значения:

......TemplateID2":null,"Incident Number":"INC000006743193","Priority":"High","mc_ueid":null,"Assint......

Я получаю сообщение об ошибке char 26: неизвестный параметр `s ', когда я пробую эту или всю строкураспечатан.

cat /tmp/file1 | sed -n  's/\(INC............\)/\1/p'

cat /tmp/file1 | sed -n 's/./*\(INC............).*/\1/'

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

Используя sed, вам нужно удалить то, что предшествует и следует за строкой:

 sed 's/.*\(INC............\).*/\1/' file

Но вы также можете использовать grep, если ваша реализация поддерживает параметр -o:

grep -o 'INC............' file

Также можно использовать Perl:

perl -lne 'print $1 if /(INC............)/' file
0 голосов
/ 23 мая 2019

Это похоже на JSON. Если вокруг него есть {braces}, который вы вырезали перед публикацией (tsk tsk), вам определенно следует использовать jq, если он доступен. Тем не менее, эта страница нуждается в некотором awk!

POSIX (работает везде):

awk 'match($0, /INC[^"]+/) {print substr($0, RSTART, RLENGTH)}' /tmp/file1`

GNU (работает на GNU / Linux):

gawk 'match($0, /INC[^"]+/, a) {print a[0]}' /tmp/file1

Если у вас более одного совпадения на строку (GNU):

gawk '{while(match($0=substr($0, RSTART+RLENGTH), /INC[0-9]+/, a)) print a[0]}' /tmp/file1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...