gpt4 book ai didi

string - 使用 Grep 输出字符串

转载 作者:行者123 更新时间:2023-12-04 01:03:59 24 4
gpt4 key购买 nike

运行命令时,我得到一个输出图表的输出:

+---------+------------------------------------------------------+
| Key | Value |
+---------+------------------------------------------------------+
| Address | longstringofcharacters |
+---------+------------------------------------------------------+
| Name | word1-word2-word3 |
+---------+------------------------------------------------------+

我可以 grep Name 来获取包含单词 Name 的行。

grep 只输出 word1-word2-word3 的字符串怎么办?

我试过 grep '*-*-*' 但它不起作用。

最佳答案

借助 GNU grep,您可以使用基于 PCRE 正则表达式的解决方案,例如

grep -oP '^\h*\|\h*Name\h*\|\h*\K\S+' file

参见 online demoregex demo .

  • -o - 只输出匹配项
  • P - 启用 PCRE 正则表达式引擎
  • ^ - 字符串的开始
  • \h*\|\h* - 包含可选水平空格的 | 字符
  • Name - 一个词 Name
  • \h*\|\h* - 包含可选水平空格的 | 字符
  • \K - 丢弃到目前为止匹配的文本的匹配重置运算符
  • \S+ - 一个或多个非空白字符。

使用 GNU awk:

awk -F'[|[:space:]]+' '$2 == "Name"{print $3}' file

将字段分隔符设置为 [|[:space:]]+ 匹配一个或多个 | 字符或空格的正则表达式,检查第 2 组是否等于 命名并获取 Field 3。

使用任何 awk(如果您需要提取像 nonwhitespaces(-nonwhitespaces)+ 这样的字符串):

awk 'match($0, /[^ -]+(-[^ -]+)+/) { print substr($0, RSTART, RLENGTH) }' file

参见 this online demo .

关于string - 使用 Grep 输出字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67116035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com