免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10194 | 回复: 11
打印 上一主题 下一主题

[文本处理] [已解决]awk对NR运算 [复制链接]

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-18 15:42 |只看该作者 |倒序浏览
本帖最后由 hjfeng1988 于 2014-12-19 21:55 编辑

文件有N行
想要的结果是第3行到N-3的最后一个列
awk 'NR>2 && NR <(NR-2) {print $NF}'
没有达到预料的结果

感谢reyleon
终于把数组搞清楚一些了。
  1. cat file
  2. a b c
  3. e f g
  4. 1 2 3
  5. a[1]=c
  6. a[2]=g
  7. a[3]=3
  8. print a[i]

  9. awk '{a[++n]=$NF}END{for(i=3;i<=n-3;i++)print a[i]}'
  10. awk '{a[NR]=$NF}END{for(i in a)if(i>2 && i<=NR-2)print a[i]}'
复制代码
另awk中NR需在END之后才能操作运算

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2014-12-18 16:07 |只看该作者
  1. awk '{a[NR]=$NF}END{for(i in a)if(i>2 && i<=NR-2)print a[i]}'
复制代码

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
3 [报告]
发表于 2014-12-18 16:10 |只看该作者
回复 2# reyleon


    可有简单粗暴的,这么长的命令看着难受{:2_169:}

求职 : Linux运维
论坛徽章:
4
狮子座
日期:2014-12-20 10:15:35天秤座
日期:2014-12-24 16:54:192015年亚洲杯之科威特
日期:2015-01-27 21:32:482015亚冠之平阳省
日期:2015-10-22 16:31:52
4 [报告]
发表于 2014-12-18 16:45 |只看该作者
回复 1# hjfeng1988

NR是行号,从1开始的,它是个变量,不可能对它作运算的。

N值应该很容易获取的,数学运算一下就行,没必要整得这么麻烦。

   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
5 [报告]
发表于 2014-12-18 17:03 |只看该作者
本帖最后由 这个冬天不冷 于 2014-12-18 17:03 编辑
  1. NR>2 && NR <(NR-2)
复制代码
这个条件什么时候会真

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
6 [报告]
发表于 2014-12-18 17:08 |只看该作者
回复 5# 这个冬天不冷


    意思跟4楼一样么,NR是变量。NR永远不可能小于NR-2?

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
7 [报告]
发表于 2014-12-18 17:16 |只看该作者
NR <(NR-2) 这条件咋成立

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
8 [报告]
发表于 2014-12-18 17:20 |只看该作者
wc -l查看文件一共多少行,awk用NR去做条件  取$NF

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
9 [报告]
发表于 2014-12-18 17:28 |只看该作者
回复 7# super皮波


    我错了,我以为NR-2这里的NR是读完文件的值。分两句写的话,我还是选择2楼。{:2_169:}

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
10 [报告]
发表于 2014-12-18 17:41 |只看该作者
本帖最后由 chengchow 于 2014-12-18 17:42 编辑

暴力的
  1. [root@mylifesvr000 ~]# cat a
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  11. 10
  12. [root@mylifesvr000 ~]# awk 'NR==FNR{a=NR-2}NR!=FNR&&FNR>2&&FNR<a{print $NF}' a a
  13. 3
  14. 4
  15. 5
  16. 6
  17. 7
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP