千家信息网

怎么在Linux/Unix上使用awk打印文件名

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章给大家分享的是有关怎么在Linux/Unix上使用awk打印文件名的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Q:我想在 Linux / 类Unix 系统上使用
千家信息网最后更新 2025年12月03日怎么在Linux/Unix上使用awk打印文件名

这篇文章给大家分享的是有关怎么在Linux/Unix上使用awk打印文件名的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Q:我想在 Linux / 类Unix 系统上使用 awk 打印文件名。 如何使用 awk 的 BEGIN 特殊模式打印文件名? 我可以使用 gawk/awk 打印当前输入文件的名称吗?(LCTT 译注:读者***能有一些 awk 的背景知识,否则阅读本文的时候会有一些困惑)

FILENAME 变量中存放着当前输入文件的名称。 您可以使用 FILENAME 显示或打印当前输入文件名,如果在命令行中未指定文件,则 FILENAME 的值为 - (标准输入)(LCTT 译注:多次按下回车键即可看到效果)。 但是,除非由 getline 设置,否则 FILENAMEBEGIN 特殊模式中未定义。

使用 awk 打印文件名

使用语法如下:

awk '{ print FILENAME }' fileNameHere awk '{ print FILENAME }' /etc/hosts

因 awk 逐行读取文件,因此,你可能看到多个文件名,为了避免这个情况,你可以使用如下的命令:(LCTT 译注:FNR 表示当前记录数,只在文件中有效)

awk 'FNR == 1{ print FILENAME } ' /etc/passwd awk 'FNR == 1{ print FILENAME } ' /etc/hosts

使用 awk 的 BEGIN 特殊规则打印文件名

使用下面的语法:(LCTT 译注:ARGV[I] 表示输入的第 i 个参数)

awk 'BEGIN{print ARGV[1]}' fileNameHere awk 'BEGIN{print ARGV[1]}{ print "someting or do something on data" }END{}' fileNameHere awk 'BEGIN{print ARGV[1]}' /etc/hosts

示例输出:

/etc/hosts

然而,ARGV[1] 并不是每一次都能奏效,例如:

ls -l /etc/hosts | awk 'BEGIN{print ARGV[1]} { print }'

你需要将它修改如下(假设 ls -l 只产生一行输出):

ls -l /etc/hosts | awk '{ print "File: " $9 ", Owner:" $3 ", Group: " $4 }'

示例输出:

File: /etc/hosts, Owner:root, Group: root

处理由通配符指定的多个文件名

使用如下的示例语法:

awk '{ print FILENAME; nextfile } ' *.c awk 'BEGIN{ print "Starting..."} { print FILENAME; nextfile }END{ print "....DONE"} ' *.conf

示例输出:

Starting...blkid.confcryptconfig.confdhclient6.confdhclient.confdracut.confgai.confgnome_defaults.confhost.confidmapd.confidnalias.confidn.confinsserv.confiscsid.confkrb5.confld.so.conflogrotate.confmke2fs.confmtools.confnetscsid.confnfsmount.confnscd.confnsswitch.confopenct.confopensc.confrequest-key.confresolv.confrsyncd.confsensors3.confslp.confsmartd.confsysctl.confvconsole.confwarnquota.confwodim.confxattr.confxinetd.confyp.conf....DONE

nextfile 告诉 awk 停止处理当前的输入文件。 下一个输入记录读取来自下一个输入文件。 更多信息,请参见 awk/gawk 命令手册页:

man awk man gawk

感谢各位的阅读!关于"怎么在Linux/Unix上使用awk打印文件名"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

文件 文件名 输入 示例 译注 输出 特殊 命令 更多 语法 内容 名称 多个 模式 知识 篇文章 处理 不错 实用 有效 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京农业银行软件开发公司地址 江苏数据库安全箱价目表 财务软件开发 安徽综合软件开发近期价格 江西网络安全竞赛答案 dat文件导入数据库文件 福建推广网络技术收费标准 数据库导出一般导到哪里 国家网络安全如何 网络技术培训班主持 青岛星辉传媒网络技术有限公司 软件开发系统研发税率 ccat网络安全工程师 监控中心服务器 烟台盘古网络技术有限公司 泉州购物直播软件开发 公司的服务器连接网络如何收费 软件开发就业论文 青年文学家杂志收录数据库 数据库多对多主键 再收到软件开发费怎么做账 写关于网络安全的博文英语 网络安全宣传周进军营新闻 鄂尔多斯市东胜区网络安全电话 数据库与eclipse的链接 景安计算机网络技术 软件开发培训内容有哪些 平谷ibm服务器回收公司 中讯设计院软件开发中心待遇 数据库中如何将裂变为行显示
0