[英]Regex pattern to match at least 1 number and 1 character in a string
[英]How to format the output of a grep with a regex pattern to match between a string and character
我一直在研究bash脚本,该脚本可以将字符串从logFile出现到outputFile中以监视其频率。 我想进一步过滤并使用该grep的结果,然后将字符串的一部分格式化为我的最终结果。
目前,我的grep如下获取我需要的logFile输出部分:
grep -n -A 1 "No entry for this particular code type" logFile.txt >> outputfile.txt
这将获得以该字符串开头的完整行,如下所示,代码类型的值在整个日志中不断变化:“此特定代码类型无条目,代码类型:001123。” 等等
我想解析从grep输出的上述结果行,只检索字符串“代码类型:”和字符“。”之间的值。 这会给我类似001123的值
我一直在网上寻找解决方案,但没有尝试过。 任何建议将不胜感激。
您可以使用bash
内置的regEx
支持来实现。 假设您将输出捕获在bash
变量中
$ myString="No entry for this particular code type, code type: 001123."
$ [[ $myString =~ code\ type:(.*). ]] && subString="${BASH_REMATCH[1]}"
$
$ printf "%s\n" "$subString"
001123
(或)如果可以再次使用通过管道传递的grep
进行regEx
捕获,请执行
$ <first_grep_command> | grep -Po "code type: \K.*(?=.)"
001123
其中-P
标志仅支持perl样式正则表达式匹配,而-o
标志仅返回匹配的字符串。
这直接在我的外壳中工作:
echo "No entry for this particular code type, code type: 001123." |grep -Po '[0-9]*'
意思是说,这种方法可以在没有太多管道的情况下适用于您的情况:
grep -Po '[0-9]*' logfile.txt >>outputfile.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.