如何在 Linux / Unix 上使用 awk 打印文件名 | Linux 中
我想在 Linux / 类Unix 系统上使用 awk 打印文件名。 如何使用 awk 的 BEGIN 特殊模式打印文件名?-- Vivek Gite
有用的原文链接请访问文末的“原文链接”获得可点击的文内链接、全尺寸原
我想在 Linux / 类Unix 系统上使用 awk 打印文件名。 如何使用 awk 的 BEGIN 特殊模式打印文件名?-- Vivek Gite 有用的原文链接请访问文末的“原文链接”获得可点击的文内链接、全尺寸原图和相关文章。致谢编译自| 作者|Vivek Gite 译者|amwps290 共计翻译:10篇 贡献时间:51 天 Q:我想在 Linux / 类Unix 系统上使用 awk 打印文件名。 如何使用 awk 的BEGIN特殊模式打印文件名? 我可以使用 gawk/awk 打印当前输入文件的名称吗?(LCTT 译注:读者最好能有一些 awk 的背景知识,否则阅读本文的时候会有一些困惑) 在FILENAME变量中存放着当前输入文件的名称。 您可以使用FILENAME显示或打印当前输入文件名,如果在命令行中未指定文件,则FILENAME的值为-(标准输入)(LCTT 译注:多次按下回车键即可看到效果)。 但是,除非由getline设置,否则FILENAME在BEGIN特殊模式中未定义。 使用 awk 打印文件名 使用语法如下:
因 awk 逐行读取文件,因此,你可能看到多个文件名,为了避免这个情况,你可以使用如下的命令:(LCTT 译注:FNR表示当前记录数,只在文件中有效)
使用 awk 的 BEGIN 特殊规则打印文件名 使用下面的语法:(LCTT 译注:ARGV[I]表示输入的第 i 个参数)
示例输出:
然而,ARGV[1]并不是每一次都能奏效,例如:
你需要将它修改如下(假设ls -l只产生一行输出):
示例输出:
处理由通配符指定的多个文件名 使用如下的示例语法:
示例输出:
nextfile告诉 awk 停止处理当前的输入文件。 下一个输入记录读取来自下一个输入文件。 更多信息,请参见 awk/gawk[1]命令手册页:
关于作者 作者是 nixCraft 的创立者,也是经验丰富的系统管理员和 Linux/Unix shell 脚本的培训师。 他曾与全球各行各业的客户合作,涉及 IT,教育,国防和空间研究以及非营利部门等多个行业。 您可以在Twitter[2],Facebook[3]和Google+[4]上关注他。 可以通过订阅我的RSS[5]来获取更多的关于系统管理,Linux/Unix ,和开源主题的相关资料。 via: 作者:Vivek Gite[7]译者:amwps290校对:wxy 本文由LCTT原创编译unix打印,Linux中国荣誉推出 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |