免费注册 查看新帖 |

Chinaunix

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

帮忙看看这个小脚本有什么问题,谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-10 09:00 |只看该作者 |倒序浏览
#!/bin/bash
awk '{for(i=1;i<=NF;i++) if(i==a){break} print $i}' a=$1 b

把命令行参数$1赋值给a ,打印b的每行,当字段数与a值相同时跳出,

[root@localhost ~]# cat b
user1  xa  am   98
user1  ab  br     87
user2  sf   ah    32
user2  us  nv    54
user2  as   ta    11
user3  ga  ha    67
user3  hj   jk    78

实际结果是
[root@localhost ~]# ./a 2
xa
ab
sf
us
as
ga
hj

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2012-01-10 10:10 |只看该作者
你希望得到的结果是什么?

论坛徽章:
0
3 [报告]
发表于 2012-01-10 10:13 |只看该作者
意欲何为

论坛徽章:
1
水瓶座
日期:2013-11-04 13:16:13
4 [报告]
发表于 2012-01-10 10:15 |只看该作者
awk -v  a=$1  试试

论坛徽章:
0
5 [报告]
发表于 2012-01-10 10:16 |只看该作者
awk '{for(i=1;i<=NF;i++) if(i==a){break} print $i}' a=$1 b
等价于
awk '{print $a}' a=$1 b

写个循环到底意欲何为?

论坛徽章:
1
2015亚冠之吉达阿赫利
日期:2015-09-09 16:42:38
6 [报告]
发表于 2012-01-10 10:20 |只看该作者
awk -v a=2 '{print $a}'  b

论坛徽章:
0
7 [报告]
发表于 2012-01-10 11:07 |只看该作者
回复 5# ywlscpl


    当字段数与a值相同时跳出打印

论坛徽章:
0
8 [报告]
发表于 2012-01-10 11:10 |只看该作者
本帖最后由 ywlscpl 于 2012-01-10 11:12 编辑

回复 7# 123freebird


    我翻译下,是不是指定一个数值N,打印前N列的内容
脚本a:
#!/bin/bash
awk -v n=$1 'NF=n' b


执行./a 2

论坛徽章:
0
9 [报告]
发表于 2012-01-10 11:17 |只看该作者
本帖最后由 123freebird 于 2012-01-10 11:21 编辑

是想打印 print $(a-1) $a
我的那个循环为什么不行? 假如a=3 for 开始先打印第一列 第二列 到第三列跳出不打印?这个逻辑错了吗?
dragon23452345 该用户已被删除
10 [报告]
发表于 2012-01-10 11:19 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP