gpt4 book ai didi

shell - 使用 awk 或 sed 获取两个模式之间的第 n 次出现

转载 作者:行者123 更新时间:2023-12-03 20:41:26 24 4
gpt4 key购买 nike

我有一个问题,我想解析文件的输出,我想最好使用 awk 或 sed 在两个模式之间抓取第 n 个文本

category
1
s
t
done
category
2
n
d
done
category
3
r
d
done
category
4
t
h
done

假设对于这个例子,我想在 category 和 done 之间获取第三次出现的文本,本质上输出将是
category
3
r
d
done

最佳答案

这可能对你有用(GNU sed):

'sed -n '/category/{:a;N;/done/!ba;x;s/^/x/;/^x\{3\}$/{x;p;q};x}' file

使用 -n 关闭自动打印选项。在 category 之间收集线和 done .在保持空间中存储一个计数器,当它达到 3 时,在模式空间中打印集合并退出。

或者,如果您更喜欢 awk:
awk  '/^category/,/^done/{if(++m==1)n++;if(n==3)print;if(/^done/)m=0}'  file

关于shell - 使用 awk 或 sed 获取两个模式之间的第 n 次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13281560/

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