【问题标题】:Extract text between single quotes in mult line file with sed which matches given word使用与给定单词匹配的sed在多行文件中的单引号之间提取文本
【发布时间】:2023-01-13 16:28:50
【问题描述】:

Javascript 文件包含如下行: 网址:'/v1/api/test/123' 'x-cookie'

我想提取的是包含“v1”字的单引号文本。

所以上面一行的输出应该是 => /v1/api/test/123

在下面试过

sed -n "s/^.*'\(.*\)'.*$/\1/ p" <<< $name

为此给出的输出是

/v1/api/test/123
x-cookie

预期输出是

/v1/api/test/123

【问题讨论】:

  • 请拿一个tour 的网站,阅读How to Ask 一个很好的问题以及如何创建一个minimal reproducible example。然后回到问题并重新表述它(最好使用您的代码、提供的输入和预期的输出)以获得(有用的)答案。展示您尝试过的方法以及遇到困难的地方,以最大限度地提高获得帮助的机会。在目前的情况下,这个问题无法回答,因为不清楚你要问什么。
  • 您可以尝试类似 grep -o "[^']*/v1/[^']*" 的方法来选择包含 v1 且被除 ' 之外的任何字符包围的行,并仅显示与正则表达式匹配的片段
  • 谢谢我得到了想要的结果

标签: linux


【解决方案1】:

如果您正在寻找包含在撇号 (') 中的字符串,其中包含 /v1/,您可以尝试简单的 grep -o

grep -o "[^']*/v1/[^']*" file1.txt

-o 标志告诉grep 只显示与正则表达式匹配的行片段。

正则表达式:

[^']          # match any character except for apostrophe (')
*             # zero or more repetitions of the previous (i.e. match zero or more characters except for '
/v1/          # match the string exactly (backslash, v1, backslash)
[^']          # match any character except for apostrophe (')...
*             # ... zero or more times

它与包含 /v1/ 的撇号之间的字符串匹配。

【讨论】:

    猜你喜欢
    • 2017-11-18
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 2014-10-10
    • 2012-10-25
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多