免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: YuZile
打印 上一主题 下一主题

awk action [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-04-08 15:16 |只看该作者
#!/bin/bash

declare -a asy
flag=0
line="nomeaning"
awk 'BEGIN{FS=","} NR>=2&&NR<=32{把$0的最后一个数据存入asy[NR-2]}' filename
#end
应该能实现吧?

论坛徽章:
0
12 [报告]
发表于 2012-04-08 15:28 |只看该作者
回复 3# Shell_HAT


    帽哥 玩帽子戏法呢

论坛徽章:
0
13 [报告]
发表于 2012-04-08 16:36 |只看该作者
#!/bin/bash

declare -a asy
declare -i MFpz=0
declare -i MFp1=0
declare -i MFp2=0

xls=$1
awk 'BEGIN{FS=","} \
        NR>=2&&NR<=32&&MFp1==0        {asy[NR-2]=$23; print $0; print MFp1} \
        NR==33                        {asy[NR-2]=$23;MFp1=1;print $0;print MFp1} \
        NR>=34&&NR<=64&&MFp2==0        {print $0,asy[NR-34]} \
        NR==65                        {MFp2=1;print $0,asy[NR-34]; print MFp2} \
        NR>=66&&NR<=96&&MFpz==0        {print $0,asy[NR-66]} \
        NR==97                        {MFpz=1;print $0,asy[NR-66]; print MFPz}' \
        $xls
红色部分并没有输出0而是空行,我想让它输出定义的declare -i MFp1=0,求解?

论坛徽章:
0
14 [报告]
发表于 2012-04-09 09:57 |只看该作者
本帖最后由 lahooo 于 2012-04-09 09:59 编辑
YuZile 发表于 2012-04-08 16:36
#!/bin/bash

declare -a asy


你的问题就是shell向awk传递变量的简单问题,Google搜一搜“shell awk 变量”答案一大把,在提问题前为啥不搜一搜呢?事无巨细都等着别人来帮助解决,不足取。自己动手丰衣足食。

论坛徽章:
0
15 [报告]
发表于 2012-04-09 20:05 |只看该作者
lahooo 发表于 2012-04-09 09:57
你的问题就是shell向awk传递变量的简单问题,Google搜一搜“shell awk 变量”答案一大把,在提问题前为 ...


主要是基本没接触过awk,也不知道该具体查什么,我写的那写都是看了网上的例子自己写的

还有我那个问题用自己想的方法解决了
declare -i MFp1=1
for id in `ls`
do
awk -v awkMFp1=MFp1 MFp1==1 {action}
MFp1=0
done
这个外还有一层循环,你说的我查查去,谢了!

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
16 [报告]
发表于 2012-04-09 21:18 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
17 [报告]
发表于 2012-04-09 22:23 |只看该作者
在问个新问题
我现在想处理的文件大致格式这样:
90条记录,每条记录以逗号隔开,前45条记录21个字段,后边的记录都是20个字段
取出前45条记录的$2至$21公20个字段输出到文件,后边的45条记录是$2至$20另外再加上前45行对应的$21(比如第46行对应第1行的$21字段值)输出到文件
,但是文件格式可能有问题,比如某一行不止21(前45行)或者20(后45行)个字段,后边可能会出现空值就是$0会以 ",$"结尾

我采取先剔除最后可能出现的第22个字段(前45行)或者第21个字段(后45行)的逗号,然后读取一行剔除第一个字段,再在后边添加一字段(后45行添加前45行最后一个字段),然后输出到文件,完全用shell脚本已经写出来了,用awk处理遇到的问题也差不多都解决了,但是我现在有点怀疑我的方法,我现在想直接保存每一行的$2-$21(或20)再添加最后$21(后45行)输出到文件,不知道哪种更靠谱一些,或者有其他的解决思路?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP