使用grep或awk搜索文本并将其打印到文件中

时间:2015-04-22 06:07:53

标签: linux

我有500个outfiles,我想在哪里打印能量值(粗体文字)。请一目了然地查看单个文件

-----------------------------------------------------------------   
FINAL RESULTS
 ENERGY    -1.5576E+03   
-----------------------------------------------------------------------------

请求您使用linux命令帮助我根据生成的outfiles打印所有能量值并将其保存到新文件“say”list.nomenclature of my outfiles of output1.out,output1.out,output3 .out等等!

2 个答案:

答案 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