首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Awk显示列中的文件名?

如何使用Awk显示列中的文件名?
EN

Stack Overflow用户
提问于 2016-07-06 10:59:55
回答 3查看 1.3K关注 0票数 2

我正在尝试执行一个添加到我的文件中的命令:当前输入文件的名称+行的索引,其中逗号数小于5+行的逗号数。

我得到了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk -F"," '{ if(NF > 5) printf("Filename: %d  Index: %d Number of commas : %d\n",FILENAME,NR, NF-1); }' dsc* >> filename.csv

产出如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Filename: 0  Index: 68520 Number of commas : 6

索引和逗号似乎工作正常,但是文件名呢?我做错了什么?

应该是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Filename: dscabc.txt   Index: 68520 Number of commas : 6
 Filename: dscabc1.txt  Index: 123 Number of commas : 6
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-06 11:03:40

FILENAME是一个字符串,而不是数字。使用%s

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk -F"," '{ if(NF > 5) printf("Filename: %s  Index: %d Number of commas : %d\n",FILENAME,NR, NF-1); }' dsc* >> filename.csv

来自man awk中讨论printf的部分

%d,%i -十进制数(整数部分)。%s字符串。

票数 4
EN

Stack Overflow用户

发布于 2016-07-06 11:03:50

对于字符串,请使用%s格式的printf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk -F"," '{ if(NF > 5) printf("Filename: %s  Index: %d Number of commas : %d\n",FILENAME,NR, NF-1); }' dsc* >> filename.csv
票数 2
EN

Stack Overflow用户

发布于 2016-07-06 11:13:59

文件名是awk中的一个内置变量,它总是设置为正在读取的当前文件的名称。变量的类型是字符串(用c中以空结尾的char数组表示)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk -F"," '{ if(NF > 5) printf("Filename: %d  Index: %d Number of commas : %d\n",FILENAME,NR, NF-1); }' dsc* >> filename.csv

在这个命令中,您将'%d‘作为'FILENAME’的格式说明符,它提示awk将'FILENAME‘解释为一个整数。您可以修改命令以使用%s来正确地将其解释为字符串。修改后的命令应该类似于:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk -F"," '{ if(NF > 5) printf("Filename: %s  Index: %d Number of commas : %d\n",FILENAME,NR, NF-1); }' dsc* >> filename.csv
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38231808

复制
相关文章
使用awk打印文件中的字段和列
Awk 自动将提供给它的输入行划分为字段,一个字段可以定义为一组字符,这些字符通过内部字段分隔符与其他字段分开。 如果你熟悉 Unix/Linux 或者做bash shell 编程,那么你应该知道什么是内部字段分隔符 (IFS) 变量是。Awk 中的默认 IFS 是制表符和空格。 Awk: 遇到输入行时,根据定义的IFS,第一组字符为field one,访问时使用 1,第二组字符是字段二,使用访问 2,第三组字符是字段三,使用访问 为了更好地理解这个 awk 字段编辑,让我们看看下面的例子: Exampl
入门笔记
2022/06/02
10K0
awk 列求和计算
说明: [分隔符]:一般为“\t”制表符,具体视格式而定 [列数]:统计的列数索引,从1开始
莫斯
2020/09/10
1.5K0
awk中NF的使用
统计机器中网络连接各个状态个数 netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 一下子不明白$NF是什么意思,去查了下awk的用法,发现NF表示浏览记录的域的个数 awk ‘{print $1}’打印第一列 awk ‘{print $2}’打印第二列 NF表的是列数 如: a b c d e 那么NF=5 $NF就是表示第五列的值,就是一行数据最后一列的那个值 $NF就是一行数据最后一列的那个值 netstat -a
千往
2018/01/24
2.2K0
awk中NF的使用
如何使用Excel将某几列有值的标题显示到新列中
如果我们有好几列有内容,而我们希望在新列中将有内容的列的标题显示出来,那么我们怎么做呢?
繁华是客
2023/03/03
11.4K0
Linux中awk工具的使用
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,默认以空格为分隔符将每行切片,切开的部分再进行各种分析处理。awk是行处理器,相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
谢公子
2022/01/19
5.3K0
Linux中awk工具的使用
awk linux 数组,Linux中的awk数组的基本使用方法
在其他的编程语言中,数组的下标都是从0开始的,也就是说,如果想反向引用数组中 的第一个元素,则需要引用对应的下标[0],在awk中数组也是通过引用下标的方法,但是在awk中数组的下标是从1开始的,在其他语言中,你可能会习惯于先“声明”一个数组,在awk中,则不用这样,直接为数组的元素赋值即可(其实如果自己给数组赋值,下标从1或者从0开始那就无所谓了!)
全栈程序员站长
2022/09/09
2.2K0
vim-调用awk对列求和
潇洒
2023/10/20
4540
vim-调用awk对列求和
linux awk获得某一列
因此,如果想要把某一文件的总行数赋值给变量nlines,可以表达为: 1) nlines=(awk 'END{print NR}' filename) 或者 2) nlines=$(awk 'END{print NR}' filename)
用户5760343
2022/05/23
2.9K0
linux awk获得某一列
AWK使用
引子 zcat hnmuseum_21070701.gz|awk -F'[: ]' '{size[$3":"$4]+=$11} END{for(time in size){print time,size[time]*1.1/1024/1024}}'|sort 命令组成分三个部分:BEGIN、BODY、END BEGIN和END需要关键字进行声明,而且是命令中的可选部分,其在命令执行时之后执行一次 BODY部分不需要关键字声明,但是在命令执行时BODY部分会根据输入的行数而执行多次 awk 'BEGIN{p
码缘
2022/09/21
6590
如何设置Element表格显示或者隐藏列
Element 表格点击复选框显示或隐藏列,效果如下: 主要步骤: 一、渲染复选框 <el-checkbox-group v-model="checkboxVal"> <el-ch
tianyawhl
2020/10/14
6.1K0
awk命令的使用
Ubuntu14.04 目的:想用awk来统计某个文本中单词出现的次数,并以一定的格式输出结构 通常,awk逐行处理文本。awk每接收文件的一行,然后执行相应的命令来处理。 用legal文件来做示例 $ cat /etc/legal The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the indivi
AnRFDev
2021/02/01
5350
如何隐藏table 中的指定列?
如何隐藏table 中的指定列?当页面需要显示的内容太多,而页面宽度又不够,不想内容显示太混乱,常常会将指定的列暂时隐藏掉,那么如何让实现呢?
爱明依
2019/03/12
6.9K0
SQL如何只让特定列中只显示一行数据
我们如果在某个表里面,如何让其中某列的其中一行数据,只是显示一次呢? 示例表 StudentID Last_Name First_Name Gender GradeLevel Class Pupil_Email Relationship Pupil_Parent_Email 5013 Wang Zack M Grade 9 Senior SG9 B 5013@example.com 爸爸 5013a@qq.com 5013 Wang Zack M Grade 9 Senior SG9 B 5013@exam
繁华是客
2023/03/03
8.8K0
如何用 awk 删除文件中的重复行【Programming】
了解如何在不排序或更改其顺序的情况下使用awk'!visited $ 0 ++'。
Potato
2019/11/09
8.7K0
如何用 awk 删除文件中的重复行【Programming】
【Linux篇】--awk的使用
awk是一个强大的文本分析工具。相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。 简单来说awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。
LhWorld哥陪你聊算法
2018/09/13
1.7K0
点击加载更多

相似问题

使用awk打印文件名和列

24

使用awk在列中包含格式的文件名

20

如何使用awk引用文件名?

60

AWK/bash如何在AWK中包含文件名

33

如何使用bash/awk在列中显示我的脚本输出?

122
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文