bash - 如何打印我从中 grep 一些行的文件名
问题描述
我正在尝试使用以下代码从几个 json 文件中获取一些行:
cat $(find ./*/*/folderA/*DTI*.json) | grep -i -E '(phaseencodingdirection|phaseencodingaxis)' > phase_direction
有效!问题是我不知道哪一行来自哪个文件
有了这个find ./*/*/preprocessing/*DTI*.json -type f -printf "%f\n"
,我可以打印这些名称,但它们出现在末尾,并且与它们各自的phaseencodingdirection|phaseencodingaxis提取行不按顺序出现。
我不知道如何组合这些代码行来打印从中提取行的文件名及其各自提取的行!?
你可以帮帮我吗?
解决方案
使用文件名作为参数grep
而不是cat
.
grep -i -H -E '(phaseencodingdirection|phaseencodingaxis)' $(find ./*/*/folderA/*DTI*.json) > phase_direction
即使只有一个文件,该-H
选项也会强制在输出中包含文件名。grep
但是由于您的参数find
是文件名,而不是递归搜索的目录,因此根本不需要使用它。只需将通配符直接传递给grep
. 也没有必要从 . 开始./
。任何非绝对路径名都相对于当前目录进行解释。
grep -i -H -E '(phaseencodingdirection|phaseencodingaxis)' */*/folderA/*DTI*.json > phase_direction
推荐阅读
- mysql - MySQL - 我如何获得外键
- c# - 即使在刷新根节点后,我们可以保持子节点扩展吗?在c#中
- apache-spark - Spark bulk insert 的 Elasticsearch 索引速度非常慢
- c++ - 在主窗口之前显示登录对话框并隐藏主窗口按钮
- ios - 从 mac 连接到 nat64 网络的设备中没有互联网
- javascript - 不同的字体源leaflet-awesome-marker和Leaflet-easy-button
- qt - 子类 Keys.onPressed 和 MouseArea.onClicked
- php - 获取多对多关系中的计数以进行记录编辑
- c# - 如何使用 jQuery 在弹出窗口中显示 JSON 解析数据
- xpath - 如何在 Firefox 开发者版中找到 XPath?