gpt4 book ai didi

awk - 使用 bash 在另一个字符串第一次出现后查找第一次出现的字符串

转载 作者:行者123 更新时间:2023-12-05 03:01:00 28 4
gpt4 key购买 nike

我有一个看起来像这样的输入文件,我想要第一次出现的单词,但只在第一次出现特殊的单词之后

只有数字在那里,所以我知道我得到了正确的字符串

编辑:我意识到字符串有/很重要

words/and/stuff #1
words/more #2
some/other/words #3
special/this #1
words/i/need/you/i.really.need.you #4
special/cool #2
words/random #5

我在找到第一次出现的“special”之后试图找到第一次出现的“word”

输出应该是

words/i/need/you/i.really.need.you #4

我尝试了以下方法

grep -m1 special file | grep -m1 words file 

awk 'NR==1,/special/ && NR==1,/words/ {print $0}' file

最佳答案

尝试:

$ awk '/special/{f=1} f && /words/ {print; exit}' file 
words/i/need/you/i.really.need.you #4

工作原理:

  • /special/{f=1}

    如果当前行匹配 special 则将变量 f 设置为 1

  • f &&/words/{print;退出

    如果f 非零且当前行匹配words,则打印当前行并退出。

带斜线的单词

如果您要匹配的单词不仅被斜杠包围而且包含斜杠,则相同的代码可以工作。只需要逃避斜线。例如,如果我们要在 special 之后查找单词 words/i/need:

$ awk '/special/{f=1} f && /words\/i\/need/ {print; exit}' file 
words/i/need/you/i.really.need.you #4

关于awk - 使用 bash 在另一个字符串第一次出现后查找第一次出现的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56389526/

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