【发布时间】:2021-04-23 11:43:30
【问题描述】:
我有一个 jupyter notebook 在一个包含一堆输出文件的目录中运行。
该目录有一堆.out 文件,我想对它们运行awk 以从中提取一些信息。
这是大部分工作的 bash 脚本:
for file in *.out
do awk '/SCF TOTAL ENERGY/ {print $NF; exit}' $file >> data.txt
done
这会从每个输出文件中获取 SCF 总能量,将它们打印出来,然后将它们扔到 data.txt。
但是,这不是我想要从输出文件中获得的唯一信息。
假设我还有一条名为“有用”的信息。
我想获取与“USEFUL”相关的数字(也在 NF 位置),在 data.txt 中创建一个新列,并用 USEFUL 数据填充该列。
我知道我可以在data.txt 中使用
awk 'BEGIN{FS=OFS=" "}
{print $0 OFS }' data.txt
但是,我不知道如何从一个文件中提取信息,并将其发送到data.txt,同时制作一个新列。
输入文件s如下所示: 先出
SCF TOTAL ENERGY ----> 1234
lorem
ipsum
text
here
more
text
USEFUL ---> 4567
秒出
CF TOTAL ENERGY ----> 4321
lorem
ipsum
text
here
more
text
USEFUL ---> 7654
第三个.out:
CF TOTAL ENERGY ----> 5566
lorem
ipsum
text
here
more
text
USEFUL ---> 8877
我希望我的data.txt 或最终数据文件看起来像:
1234 4567
4321 7654
5566 8877
第一列为 SCF TOTAL ENERGY,第二列为 USEFUL。
目前,我只有第一列。我想创建一个代码,让我可以继续从输入文件中提取信息并继续添加列。
感谢您的任何建议!
【问题讨论】:
-
感谢您在问题中付出努力,能否请您在问题中发布输入和预期输出示例,以便更好地理解您的问题,谢谢。
-
好的,我会尽快制作文件。谢谢@RavinderSingh13
-
我添加了一些附加信息。希望它可以帮助@RavinderSingh13
-
感谢您添加示例。能否请您告诉我们
-512.327909892086 29行是如何输出的,对不起,但不清楚。 -
哦,因为我只有输入文件的示例,所以我在输出文件中发布了示例编号。我可以进行编辑。
标签: shell awk text text-processing