我正在处理以下问题:
我必须从一组.txt
文件中提取数据。由于这些文件分布在不同的目录中,我使用的是下一个命令:
find -name results.txt | xargs grep "Gion_prom="
它在所有Gion_prom=
文件中查找关键字results.txt
并返回此信息:
./40/R4_cero_cluster/thermo/results.txt: Gion_prom= -67555.5392
./50/P1_water_cero/thermo/results.txt: Gion_prom= -73379.3272
./50/R4_cero_cluster/thermo/results.txt: Gion_prom= -67680.5744
./5/P1_water_cero/thermo/results.txt: Gion_prom= -73778.5554
./5/R4_cero_cluster/thermo/results.txt: Gion_prom= -68058.3461
./60/P1_water_cero/thermo/results.txt: Gion_prom= -73488.4344
./60/R4_cero_cluster/thermo/results.txt: Gion_prom= -67944.0657
它运行良好,但我需要打印带有关键字“R4_cero_cluster”的onyl文件,它应该是这样的:
./40/R4_cero_cluster/thermo/results.txt: Gion_prom= -67555.5392
./50/R4_cero_cluster/thermo/results.txt: Gion_prom= -67680.5744
./5/R4_cero_cluster/thermo/results.txt: Gion_prom= -68058.3461
./60/R4_cero_cluster/thermo/results.txt: Gion_prom= -67944.0657
然后,如果可能,我需要按数字“40”,“50”,“60”等排序。 因此,终端中打印的最终数据应为:
./5/R4_cero_cluster/thermo/results.txt: Gion_prom= -68058.3461
./40/R4_cero_cluster/thermo/results.txt: Gion_prom= -67555.5392
./50/R4_cero_cluster/thermo/results.txt: Gion_prom= -67680.5744
./60/R4_cero_cluster/thermo/results.txt: Gion_prom= -67944.0657
我知道最后一件事可能是sort
函数可以使用,但我是编程的初学者,真的不知道该怎么做。
欢迎任何帮助或建议。
修改
关键字find
搜索results.txt
个文件。在执行'grep'时,它会在所有results.txt
个文件中搜索关键字'Gion_prom'。
我只需要从某些父目录为'R4_cero_cluster'的文件中打印'Gion_prom',以避免来自'R4_cero_cluster'目录的结果。
答案 0 :(得分:1)
您可以使用-path
中的find
选项查找匹配路径中的文件,并在sort
之后找到grep
的管道:
find . -path '*/R4_cero_cluster/*' -name results.txt |
xargs grep 'Gion_prom=' |
sort -t/ -k2,2n