gpt4 book ai didi

linux - 从输出文件中提取相似文本 block 的第 i 个实例的方法?

转载 作者:太空狗 更新时间:2023-10-29 12:05:30 27 4
gpt4 key购买 nike

在 Linux 中,我有一个程序会在运行一定次数的迭代时稍微更改坐标列表。我可以使用 grep -c 来计算迭代次数,我想从该程序输出中获取最后一组标签和坐标。

我的源文件看起来像这样:

text
total number of objects with coordinates = n
text
begin coordinates
label1 x1 y1 z1
label2 x2 y2 z2
...
labeln xn yn zn
end coordinates
text
text
begin coordinates
label1 a1 b1 c1
label2 a2 b2 c2
...
labeln an bn cn
end coordinates
text
text

在这种情况下,我想将标签集及其 a、b 和 c 坐标转储到如下所示的文本文件中:

label1 a1 b1 c1
label2 a2 b2 c2
...
labeln an bn cn

我更喜欢使用 grep 或 awk 之类的工具来执行此操作,但我对它们的实现还不够熟悉。

编辑:我忘了提到标签既不是恒定的也不是唯一的,所以 label2 可以等于 label5 或 labeln。

最佳答案

每当您看到 begin coordinates 时,开始保存新的文本 block 。当您看到 结束坐标 时停止保存它。在文件末尾,打印您保存的最后一个文本 block 。

#!/usr/bin/env awk -f

/^begin coordinates/ { text = ""; save = 1 }
save { text = text $0 "\n" }
/^end coordinates/ { save = 0 }
END { print text }

请注意,text = text $0 "\n" 将变量 text$0\n 连接起来>。空格是 awk 的连接运算符。

关于linux - 从输出文件中提取相似文本 block 的第 i 个实例的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14527964/

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