gpt4 book ai didi

linux - 如何选择文件中多次出现的相同行序列?

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:41 24 4
gpt4 key购买 nike

假设我有一个文件如下:

101 abcd <time>
106 efgh <time>
107 ijkl <time>
110 pqrs <time>
105 trsf <time>
101 yrte <time>
109 tyti <time>
110 tyui <time>

我想对从 101 开始到 110 结束的大块行进行一些操作。当一个文件中只有一次 101 和 110 出现时,我能够解决它。

sed -ne 's/101/,/110/p' file1 > file2

使用这个命令,我可以取出我想要处理的行 block 。请帮我找到我可以在第一个文件中保存第一个 block ,在第二个文件中保存第二个匹配行等的逻辑。

我正在 AIX 中编写脚本。

最佳答案

你可以这样做:

awk '/^101/ && !i { c++; i=1 } i { print > "file" c } /^110/ { i=0 }' input

这只是在每次匹配 ^101 时增加一个计数器 (c),但前提是还没有在正在打印的 block 中。如果合适,第二个子句打印到名称中包含计数器的输出文件,第三个子句关闭标志 (i),该标志用于确定当前行是否在待处理的 block 中打印出来。

另一种选择是简单地做:

awk '/^101/,/^110/{ print > "output" c } /^110/{c++}' c=1 input

关于linux - 如何选择文件中多次出现的相同行序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14883691/

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