我正在尝试在包含大量数据的字符串中获取子字符串。 正则表达式(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/'
答案 0 :(得分:2)
使用sed,您需要删除字符串前后的内容:
sed 's/.*\(INC............\).*/\1/' file
但是,如果您的实现支持grep
选项,您也可以使用-o
:
grep -o 'INC............' file
也可以使用Perl:
perl -lne 'print $1 if /(INC............)/' file
答案 1 :(得分:0)
看起来像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