我有从 3 到 8 的目录。每个目录中都有一个名为 OUTCAR 的文件。我需要从此文件中 grep 一个数字,如下所示:
grep Elapsed OUTCAR|egrep -o "[0-9]+\.[0-9]+"
有问题的行看起来像这样:
Elapsed time (sec): 45123.137
所以,最后我想打印两列作为目录名称并egrep
输出如下:
3 80650.077
..
8 42757.057
例如当我进入文件夹 3 时,grep Elapsed OUTCAR|egrep -o "[0-9]+\.[0-9]+"
我得到了80650.077
“非常感谢您的帮助!”
答案1
使用grep
和sed
:
grep -oP 'Elapsed time \(sec\):\K.*' {3..8}/OUTCAR | sed 's_/OUTCAR:__'
这使用括号扩展{3..8}/OUTCAR
来构造该过程的参数列表grep
:
3/OUTCAR 4/OUTCAR 5/OUTCAR …
grep
在这些文件中搜索匹配的行,并仅输出冒号后的相对文件路径和名称的部分。sed
从每一行中删除不需要的文件名部分,只留下目录名称和匹配项(其中已经包含空格)。