免费注册 查看新帖 |

Chinaunix

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

awk 的一个简单问题,麻烦一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-13 16:22 |只看该作者 |倒序浏览
f2=$2

请问 awk '{print $2}'
的使用变量 f2的等效指令怎么写

多谢
在复杂一点
等价于 awk '{print $2 "," $4 "," $6}' 也就是用, 分割打印 2 4 6 列
用一个变量代替 $2 "," $4 "," $6

然后用类似
awk '{print "'$var'"}' 打印出相同的结果

[ 本帖最后由 pplong 于 2006-7-13 16:34 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-07-13 16:57 |只看该作者
前面是废话。
是不是就要打印出文件中$2,$4,$6相同的内容。
awk '{a[$2,$4,$6]++}END{for(i in a) if (a[i]>0) print i}' filename
没测试。

论坛徽章:
0
3 [报告]
发表于 2006-07-13 17:49 |只看该作者
不行,这样出来是在不同的列
是这样我有一些数据,如
a,1,b,2,c,3,d,4,e,5................
即 域名,值.....这种格式,我要插入mysql生成sql 语句
变成
insert into table (a,b,c,d,e) values (1,2,3,4,5)
这样用awk 处理,直接print 当然可以,awk {print "insert into table (" $1 "," $2......" values (" 1 "," 3 .......)"}' input-data 类似这样可以
但由于输入数据的长度不固定,为了便于维护,希望将 域名 和域值 分别防在不同的变量里

field1=$1 $3 $5 或者 field2=$1 $3  类似的变量
然后field= field or field2
域值也这样处理
然后采用awk {print field ...field_value}.. 这样的格式生成sql

用awk 处理数据,大家是不都用perl 了

[ 本帖最后由 pplong 于 2006-7-13 17:52 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-07-13 18:35 |只看该作者
  1. awk '{var1=$2;var2=$4;var3=$6};{print var1","var2","var3}' your_file
复制代码

论坛徽章:
0
5 [报告]
发表于 2006-07-13 21:17 |只看该作者
老上的方法可行,-v 我也用过都没问题。

可是我想知道如果我先
fileld=$2
然后用类似 awk '{print field}' 这样来引用$2,有没人用过。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2006-07-14 00:20 |只看该作者
原帖由 pplong 于 2006-7-13 21:17 发表
老上的方法可行,-v 我也用过都没问题。

可是我想知道如果我先
fileld=$2
然后用类似 awk '{print field}' 这样来引用$2,有没人用过。


awk '{print '"$fileld"'}'

论坛徽章:
0
7 [报告]
发表于 2006-07-14 11:43 |只看该作者
field=$2
awk '{print '"$fileld"'}'  != awk {print $2}'

这个 ' ""试了半天都没试出来

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2006-07-14 11:52 |只看该作者
原帖由 pplong 于 2006-7-14 11:43 发表
field=$2
awk '{print '"$fileld"'}'  != awk {print $2}'

这个 ' ""试了半天都没试出来

/home/lee#var=123
/home/lee#awk 'BEGIN{print "var is",'"$var"'}'
var is 123

论坛徽章:
0
9 [报告]
发表于 2006-07-14 13:39 |只看该作者
一般变量没问题
#cat bb
aaa bbb ccc
#cat t
f="$2"
awk '{print $2 "=" '"$f"'}' bb
#sh t
bbb=

我的意思是得到bbb=bbb
玩不转,估计没办法

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
10 [报告]
发表于 2006-07-14 13:44 |只看该作者
原帖由 pplong 于 2006-7-14 13:39 发表
一般变量没问题
#cat bb
aaa bbb ccc
#cat t
f="$2"
awk '{print $2 "=" '"$f"'}' bb
#sh t
bbb=

我的意思是得到bbb=bbb
玩不转,估计没办法

你这个脚本没参数呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP