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
    -输出仅匹配
  • P
    -启用PCRE正则表达式引擎
  • ^
    -字符串的开头
  • \h*\\124;\ h*
    -a
    字符,包含可选的水平空格
  • Name
    -一个单词
    Name
  • \h*\\124;\ h*
    -a
    字符,包含可选的水平空格
  • \K
    -匹配重置运算符,用于丢弃迄今为止匹配的文本
  • \S+
    -一个或多个非空白字符
使用GNU
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}
位表示打印第四个空格分隔的单词。

谢谢,这是一个完美的答案。已经开始运行了!