gpt4 book ai didi

bash - 头输出到特定行

转载 作者:行者123 更新时间:2023-11-29 09:44:37 26 4
gpt4 key购买 nike

我有一堆格式如下的文件。

A.txt:

some text1      
more text2
XXX
more text
....
XXX
.
.
XXX
still more text
text again

每个文件至少有 3 行以 XXX 开头。现在,对于每个文件 A.txt 我想写所有行直到第 3 次出现 XXX (在上面的例子中它是直到 之前的行仍然更多文本) 到文件A_modified.txt

我想在 bash 中执行此操作并想出了 grep -n -m 3 -w "^XXX$"* | cut -d: -f2 获取每个文件中对应的行号

是否可以使用 head 和这些行号来生成所需的输出?

PS:我知道一个简单的 python 脚本就可以完成这项工作,但我无缘无故地尝试在这个 bash 中做。

最佳答案

一个更简单的方法是使用 awk。假设您当前的工作目录中只有您感兴趣的文件,请尝试:

for i in *; do awk '/^XXX$/ { c++ } c<=3' "$i" > "$i.modified"; done

或者如果您的文件非常大:

for i in *; do awk '/^XXX$/ { c++ } c>=3 { exit }1' "$i" > "$i.modified"; done

关于bash - 头输出到特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793757/

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