匹配后打印数字 (bash)
Printing the numbers after match (bash)
我正在尝试编写一个脚本(使用 bash)来查找单词(例如“E( ENERGY) =”)并打印该行的其余部分,这实际上是一些数字“-“ 在前。澄清一下,我在文件中查找的示例行是;
MOST-DESIRED RESULT E( ENERGY) = -9.68765465413
我只需要打印-9.68765465413。
我设法打印了整行,但这对我来说相当无效。到目前为止,我手头的脚本如下(名为script.sh):
#!/usr/bin/env bash
output=""
ext="log"
word="E( ENERGY)"
find "$output" -type f -name "*.$ext" -exec grep -wFnH "$word" {} +
然后我在另一个脚本 (run_script.sh) 中循环此脚本以查看文件夹中的文件以查看我拥有的所有文件。我当前的输出是这样的;
RESULT1_DH.log:567: MOST-DESIRED RESULT E( ENERGY) = -1.0501552997
RESULT2.log:567: MOST-DESIRED RESULT E( ENERGY) = -1.0501552997
但我希望它看起来像这样;
RESULT1_DH.log -1.0501552997
RESULT2.log -1.0501552997
如果有人能帮我解决这个问题,我将不胜感激。提前致谢!
示例输入:
$ head RESULT*log
==> RESULT1_DH.log <==
MOST-DESIRED RESULT E( ENERGY) = -1.0501552997
MOST-DESIRED RESULT E( POWER) = -9.9999999999
==> RESULT2.log <==
MOST-DESIRED RESULT E( ENERGY) = -1.0501552997
MOST-DESIRED RESULT E( POWER) = -9.9999999999
一个awk
想法:
output='.'
ext='log'
word="E( ENERGY)"
find "${output}" -type f -name "*.${ext}" -exec awk -v ptn="${word}" 'index([=11=],ptn) {print FILENAME,$NF}' {} +
这会生成:
./RESULT1_DH.log -1.0501552997
./RESULT2.log -1.0501552997
我正在尝试编写一个脚本(使用 bash)来查找单词(例如“E( ENERGY) =”)并打印该行的其余部分,这实际上是一些数字“-“ 在前。澄清一下,我在文件中查找的示例行是;
MOST-DESIRED RESULT E( ENERGY) = -9.68765465413
我只需要打印-9.68765465413。 我设法打印了整行,但这对我来说相当无效。到目前为止,我手头的脚本如下(名为script.sh):
#!/usr/bin/env bash
output=""
ext="log"
word="E( ENERGY)"
find "$output" -type f -name "*.$ext" -exec grep -wFnH "$word" {} +
然后我在另一个脚本 (run_script.sh) 中循环此脚本以查看文件夹中的文件以查看我拥有的所有文件。我当前的输出是这样的;
RESULT1_DH.log:567: MOST-DESIRED RESULT E( ENERGY) = -1.0501552997
RESULT2.log:567: MOST-DESIRED RESULT E( ENERGY) = -1.0501552997
但我希望它看起来像这样;
RESULT1_DH.log -1.0501552997
RESULT2.log -1.0501552997
如果有人能帮我解决这个问题,我将不胜感激。提前致谢!
示例输入:
$ head RESULT*log
==> RESULT1_DH.log <==
MOST-DESIRED RESULT E( ENERGY) = -1.0501552997
MOST-DESIRED RESULT E( POWER) = -9.9999999999
==> RESULT2.log <==
MOST-DESIRED RESULT E( ENERGY) = -1.0501552997
MOST-DESIRED RESULT E( POWER) = -9.9999999999
一个awk
想法:
output='.'
ext='log'
word="E( ENERGY)"
find "${output}" -type f -name "*.${ext}" -exec awk -v ptn="${word}" 'index([=11=],ptn) {print FILENAME,$NF}' {} +
这会生成:
./RESULT1_DH.log -1.0501552997
./RESULT2.log -1.0501552997