bash - 仅在找到时打印文件名
问题描述
所以我有一个命令可以打印主机(如果找到)。
awk -v IGNORECASE=1 -v m="$host" '$2~m {p=1} NF>2 && $2!~m {p=0} p' ${TEMP}/*
这就是它的结果
33 VMME87 VMware 51402EC000CF2732 3:0:2
51402EC000CF2730 3:0:1
51402EC000CF2730 2:0:1
51402EC000CF2732 2:0:2
83 VMME87 VMware 51402EC000CF2732 1:2:4
51402EC000CF2730 1:2:3
51402EC000CF2730 0:2:3
51402EC000CF2732 0:2:4
但是,是否也可以将文件名打印到找到它的位置?
大概是这样的:
**Name of the file**
33 VMME87 VMware 51402EC000CF2732 3:0:2
51402EC000CF2730 3:0:1
51402EC000CF2730 2:0:1
51402EC000CF2732 2:0:2
echo (space)
**Name of the file**
83 VMME87 VMware 51402EC000CF2732 1:2:4
51402EC000CF2730 1:2:3
51402EC000CF2730 0:2:3
51402EC000CF2732 0:2:4
如果我使用 a grep
,它会打印文件名,但不会打印所有最后一列。
Name of the file 33 VMME87 VMware 51402EC000CF2732 3:0:2
解决方案
当前文件名在FILENAME
变量中可用。改变这部分
{p=1}
至
{p=1; print FILENAME}
如果您只想要没有路径的文件名,请使用:
{p=1;sub(/^.*\//,"",FILENAME);print FILENAME}
推荐阅读
- python - 原始 sql 查询和普通 sql 查询有什么区别?
- cocoa - Cocoa - 在情节提要中以编程方式呈现 NSViewController LIKE “显示选项”(不是模态)
- git - 如何强制 prod 用户提交拥有 --author
- java - 如何在多个类上应用绑定数据转换/在工厂类上应用绑定
- mysql - 带有两个单独表的 Mysql NOT EXISTS 似乎无法按预期工作
- android - 你如何防止后退按钮刷新活动的内容?
- java - Eclipse 2019-09 - 在创建新项目时出现错误:“无法确定 Java 版本”
- spring - 如何使用 jpa entitymanager 在“经典”Spring 5 应用程序中注册休眠类型描述符
- google-cloud-data-fusion - Cloud Data Fusion 实例不会删除
- php - file_get_contents & file_put_contents 可靠还是会导致数据丢失?基准测试结果