在Linux中,如何通过将文件中包含的字符串与包含该字符串的文件名关联来提取该字符串

在Linux中,如何通过将文件中包含的字符串与包含该字符串的文件名关联来提取该字符串,linux,bash,text,directory,grep,Linux,Bash,Text,Directory,Grep,我在目录中有一组文件: file1.jdl file2.jdl ... filen.jdl 每个文件都可以包含这样一个字符串, 例如,file1.jdl包含 runexe EXE1 $str1 str2 ... ...other stuff runexe FILE_EXE2 abc ... ... ...other stuff 如何使用脚本提取一个列表,该列表包含一对类似这样的数据,没有文件路径,也没有可能出现在runexe旁边的第一个字符串之后的其他字符串 file1.jdl EXE1

我在目录中有一组文件:

file1.jdl
file2.jdl
...
filen.jdl
每个文件都可以包含这样一个字符串, 例如,file1.jdl包含

runexe EXE1 $str1 str2 ...
...other stuff
runexe FILE_EXE2 abc ... ...
...other stuff
如何使用脚本提取一个列表,该列表包含一对类似这样的数据,没有文件路径,也没有可能出现在runexe旁边的第一个字符串之后的其他字符串

file1.jdl EXE1 
file1.jdl FILE_EXE2
...
filen.jdl ...

你可以循环浏览这些文件

#/usr/bin/env bash
cd/path/to/file/| |退出
对于*.jdl中的文件;做
awk'/EXE/{打印文件名,$0}'“$file”
完成

如果您不需要进行递归搜索,那就可以了,否则您需要使用
find
或shell选项
globstar

抱歉,但我遗漏了一个细节:程序可以工作,但是它给了我一个输出,比如:/path/file1.jdl runexe WRITEMIN$str1$str2$str3我如何删除路径和字符串$str1$str2$str3并只获取file1.jdl WRITEMIN pair请更新您的帖子并添加详细信息。您使用@oguz ismail发布的
awk
并使用
${file}
从文件名中删除路径名。我有此错误。无法打开文件以读取任何此类文件或目录使用文件的正确路径,例如,用文件所在的正确路径替换
/path/to/file
。是否尝试过
awk'$1==“runexe”{print filename,$2}“*.jdl
?@oguzismail感谢您的建议,现在仍然需要删除path@famedoro,我已将cd添加到脚本中,因此您无需删除路径名。