我有500个outfiles,我想在哪里打印能量值(粗体文字)。请一目了然地查看单个文件
-----------------------------------------------------------------
FINAL RESULTS
ENERGY -1.5576E+03
-----------------------------------------------------------------------------
请求您使用linux命令帮助我根据生成的outfiles打印所有能量值并将其保存到新文件“say”list.nomenclature of my outfiles of output1.out,output1.out,output3 .out等等!
答案 0 :(得分:0)
这个可能就像简单地做一样简单:
grep ENERGY output*.out /dev/null
它只是输出所有指定输入文件中包含ENERGY
字符串的所有行,格式为:
output1.out:ENERGY 3.21 gigawatts
output2.out:ENERGY 3.141492653589 km.V/s^2
output3.out:ENERGY (hardly any)
(显然不是真正的单位)。
/dev/null
技巧只是为了确保文件名仍然列出,如果只有一个。在这种情况下grep
的行为是打印行而不文件名,因此添加另一个输入文件可确保始终显示文件。
答案 1 :(得分:0)
您可以使用awk
:
for f in output*.out
do
# print the filename without a newline
echo -n $f >> nomenclature.list
# tells awk to search for the line containing ENERGY,
# then print the last field of the line (whitespaces as default field
# separator)
awk '/ENERGY/ { print $NF; }' $f >> nomenclature.list
done