awk显示某一个字段在第几行第几列
来源:互联网 发布:家暴经历 知乎 编辑:程序博客网 时间:2024/04/28 02:57
今天最有收获的算是这篇blog了,虽然花了点时间去理解,不过还是蛮欣慰的
总算是找出解决办法了,而且学到了新东西
切入正题:
这里面主要是
awk里面使用for循环
然后for循环又嵌套了if语句
之后if语句里又用到了awk的条件表达式
另外还可能涉及到定义awk内置变量
原文件内容是
[root@localhost zhaoyj]# cat file.txt
Mike Harrington:[510] 548-1278:250:100:175
Christian Dobbins:[408] 538-2358:155:90:201
Susan:[206] 654-6279:250:60:50
Archie McNichol:[206] 548-1348:250:100:175
现在要做的是:
查找“Susan”这个字段所在的行号和列号,并以一定的格式输出
输出格式为:
Susan: "数字1"Line " 数字2"Column
使用awk内置变量:
[root@localhost zhaoyj]# awk -F: -v str="Susan" '{v="";for (i=1;i<=NF;i++) if ($i==str) v=v?"":i;if (v) print str":\t"NR"Line"v"Column"}' file.txt
Susan: 3Line1Column
定义awk内置变量 str=“Susan”
初始化v的值为空 v=""
对每行的字段进行循环 for (i=1;i<=NF;i++)
判断字段是否匹配“Susan” if ($i==str)
如果匹配的话进而判断v的值 v=v?
如果v没有值的话,给它赋值为i【字段号】?"":i
如果v不为空,则输出结果 if (v) print str":\t"NR"Line"v"Column"
PS: v=v?"":i 这是awk条件表达式
不使用awk内置变量,而且使用match函数
[root@localhost zhaoyj]# awk -F: '{v="";for (i=1;i<=NF;i++) if (match($i,/Susan/)) v=v?"":i;if (v) print "Susan"":\t"NR"Line "v"Column"}' file.txt
Susan: 3Line 1Column
这条命令与上述的不同之处就是if判断那块将
if ($i==str)
改成了
if (match($i,/Susan/))
if判断中调用match函数
有种感觉:
善于发现和探索的东西总能让你喜出望外
各位童鞋们,晚安,好想好好睡一觉- awk显示某一个字段在第几行第几列
- 查找'abcd'是第几行,第几列
- C语言查找字符串在文件中的第几行第几列
- shell 读取文件第几行 第几列的值
- ListView设置当前在第几行
- js table 以第几行的第几列作为标准合并
- ListView指定第几个item显示在第一行
- 如何在网站底部显示第几位访客代码
- 帝国从第几条显示
- EditText获取第几行
- 从内表字段名称获取此字段在内表第几列
- Scrol view 显示页签 第几页 第几页
- FUN_SYS_GET_NUM_WEEK(日期在第几周)
- qduoj 排在第几个
- 插入新行在文件的导数第几行
- 查询某条记录在数据库中是 第几行
- python DataFrame获取行数、列数、索引及第几行第几列的值
- mysql查询第几行到第几行记录
- Android ApiDemos详解之App/Activity/Forwarding(5)
- 从现在起每周六的晚上必写一篇技术博客和一篇工作心情博客,以此来提升自己
- C++内存管理详解
- Ubuntu更新管理器
- CWnd::OnContextMenu函数(右键单击弹出快捷菜单)
- awk显示某一个字段在第几行第几列
- 如何成为一个优秀的程序员?
- 十大经典企业管理理念
- Windows Azure Learning Note (2)
- Ubuntu软件安装
- get android process id and thread id
- asp.net 天气预报查寻
- eclipse,python,svn以及相关插件安装
- DWR之与服务器端的DWR交互