gpt4 book ai didi

linux - 通过 Bash 更改 txt 文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:12 26 4
gpt4 key购买 nike

我有一个文本文件,看起来像

file:/path/to/file
..
..
DA:34,0,0
DA:86,0,0
DA:87,0,0
..
DA:89,0,0
file:/path/to/file
..
DA:23,0,1
..
DA:24,0,1
DA:25,0,1
..

我只想将第一行以“DA”开头的行保留在以“file”开头的行之后。其他以“DA”开头的行必须删除。还有很多其他行(我用“..”标记了它们),它们也需要保留。

结果应如下所示:

file:/path/to/file
..
..
DA:34,0,0
..
file:/path/to/file
..
DA:23,0,1
..
..

有人可以帮我吗?我将非常感激。谢谢

最佳答案

这与 Printing with sed or awk a line following a matching pattern 密切相关.

你所追求的是:

awk '/^file/{f=1}(f&&/^DA/){f=0;print}!/^DA/' file

这是如何工作的?

  • /^file/{f=1}:如果您找到以单词“file”开头的行,请将标记 f 设置为 1
  • (f&&/^DA/){f=0;print}: 如果标志 f 不为零,并且该行以 DA 开头,则打印该行并将标志设置为零。这可确保您只打印 file 之后的第一个 DA
  • !/^DA/:打印所有不以DA开头的行

较短的版本:

awk '/^file/{f=1}(f--&&/^DA/);!/^DA/' file

关于linux - 通过 Bash 更改 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52833141/

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