gpt4 book ai didi

unix - 如何在unix中提取两个单词之间的文本?

转载 作者:行者123 更新时间:2023-12-03 22:17:35 27 4
gpt4 key购买 nike

一世

使用
基本的
sed
表达 :-

sed -n "am/,/sed/p" 

获取“am”和“sed”之间的文本
这将输出“am\n using\n basic\n sed”。
但我真正的问题是字符串是否是:-

一世

使用
基本的
格雷普
表达。

我在这句话中应用了上面的 sed
然后它给出了“am\n using\n basic\n grep\n expression”
它不应该给它。如何丢弃
输出如果没有匹配?

有什么建议?

最佳答案

问题中的命令( sed -n "/am/,/sed/p" ,请注意添加的斜杠)表示:

  • 查找包含字符串 am 的行
  • 并打印( p )直到包含 sed 的行发生

  • 因此它打印:
    I am using basic grep expression

    因为它包含 am .如果您要添加更多行,它们也会被打印出来,直到包含 sed 的行为止。发生。

    例如。:
    echo -e 'I am using basic grep expression.\nOne more line\nOne with sed\nOne without' | sed -n "/am/,/sed/p"

    结果是:
    I am using basic grep expression.
    One more line
    One with sed

    我认为 - 你想要做的是这样的:
    sed -n "s/.*\(am.*sed\).*/\1/p"

    例子:
    echo 'I am using basic grep expression.' | sed -n "s/.*\(am.*sed\).*/\1/p"

    echo 'I am using basic sed expression.' | sed -n "s/.*\(am.*sed\).*/\1/p"
    sed -n "s/.*\(am.*sed\).*/\1/p"

    关于unix - 如何在unix中提取两个单词之间的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6127786/

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