String 使用Grep输出字符串
运行命令时,我会得到一个输出图表的输出:String 使用Grep输出字符串,string,grep,wildcard,String,Grep,Wildcard,运行命令时,我会得到一个输出图表的输出: +---------+------------------------------------------------------+ |键值| +---------+------------------------------------------------------+ |地址| longstringofcharacters| +---------+--------------------------------------------------
+---------+------------------------------------------------------+
|键值|
+---------+------------------------------------------------------+
|地址| longstringofcharacters|
+---------+------------------------------------------------------+
|名称| word1-word2-word3|
+---------+------------------------------------------------------+
我可以grep Name来获取包含单词Name
的行
我应该用什么grep只输出word1-word2-word3
字符串
我尝试了
grep'*-*-*'
但没有成功。对于GNU grep,您可以使用基于PCRE正则表达式的解决方案,如
grep-oP'^\h*\\124;\ h*Name\h*\\124;\ h*\K\S+'文件
请参阅和
-输出仅匹配-o
-启用PCRE正则表达式引擎P
-字符串的开头^
-a\h*\\124;\ h*
字符,包含可选的水平空格
-一个单词Name
Name
-a\h*\\124;\ h*
字符,包含可选的水平空格
-匹配重置运算符,用于丢弃迄今为止匹配的文本\K
-一个或多个非空白字符\S+
awk
:
awk-F'[|[:space:]+'$2==“Name”{print$3}文件
将字段分隔符设置为与一个或多个
字符或空格匹配的[:space:]+
正则表达式,检查组2是否等于Name
,并抓取字段3
使用任何awk
(如果需要提取类似非空白(-nonwhitespaces)+
的字符串,请执行以下操作:
awk'match($0,/[^-]+([^-]+)+/){print substr($0,RSTART,RLENGTH)}文件
请参阅。使用awk的简单解决方案是:
awk '/Name/{ print $4 }'
/Name/
部分介绍了awk如何“greps”。{print$4}
位表示打印第四个空格分隔的单词。谢谢,这是一个完美的答案。已经开始运行了!