免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Shell awk
12下一页
最近访问板块 发新帖
查看: 2516 | 回复: 14
打印 上一主题 下一主题

awk [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-30 14:27 |只看该作者 |倒序浏览
echo ${f[*]}|awk '{l=split("F130086T2F|U131086T2F|P132086T2F",status,"|");for (i=1;i<=l;i++)  { s=" "status[i];print "eval F=("s ")" }}'

运行结果
eval F=( F130086T2F)
eval F=( U131086T2F)
eval F=( P132086T2F)


但是我想取
F=(F130086T2F U131086T2F P132086T2F)后面函数想用${f[*]}|



论坛徽章:
0
2 [报告]
发表于 2012-05-30 14:33 |只看该作者
{:3_191:}
表示,看不懂

论坛徽章:
0
3 [报告]
发表于 2012-05-30 14:36 |只看该作者
原先文件为
F130086T2F|U131086T2F|P132086T2F


我想取出这个F130086T2F,U131086T2F,P132086T2F,但是原先文件长度不固定?怎么做

论坛徽章:
0
4 [报告]
发表于 2012-05-30 14:41 |只看该作者
本帖最后由 kk5234 于 2012-05-30 14:42 编辑

回复 3# xp20683
  1. echo 'F130086T2F|U131086T2F|P132086T2F' |sed 's/|/,/g'
  2. F130086T2F,U131086T2F,P132086T2F
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-05-30 14:46 |只看该作者
这样我做过,但是我后面shell语言,怎么取引用这三个字符串,我需要把她们放入变量或数组中,后面代码需要引用这三个字符串

论坛徽章:
0
6 [报告]
发表于 2012-05-30 15:05 |只看该作者
  1. awk 'BEGIN{a="F130086T2F|U131086T2F|P132086T2F";split(a,b,"|");for(i in b){print i,b[i];}}'
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-05-30 15:10 |只看该作者
回复 5# xp20683

这样吧
  1. echo 'F130086T2F|U131086T2F|P132086T2F' | awk -F"|" '{print $1,$2,$3}' | while read a b c ;do echo "first:" $a ; echo "second: " $b ; echo "last :" $c ; done;
复制代码

论坛徽章:
0
8 [报告]
发表于 2012-05-30 15:38 |只看该作者
其实这种字符串截来截去的,直接全部都丢awk 里处理方便的多,为什么要给shell呢,shell的数组/字符串处理并不好;
如果最终要传递很多变量,可以eval awk ’{print “a=1;b=2;c=3”}‘ 这样子来。

论坛徽章:
0
9 [报告]
发表于 2012-05-30 15:59 |只看该作者
awk 'BEGIN{split("F130086T2F|U131086T2F|P132086T2F",status,"|");for(i in status){print status[i];}}'|while read a;do  echo $a";done;


这个可以show 出:
F130086T2F
U131086T2F
P132086T2F

但是退出awk,我就无法使用$a了?后面我想cat文件就没办法做了
awk 'BEGIN{split("F130086T2F|U131086T2F|P132086T2F",status,"|");for(i in status){print status[i];}}'|while read a;do "cat $locdir/$a.BI>>$c";done;


运行结果
-ksh: cat /F130086T2F.BI>>: not found [No such file or directory]
-ksh: cat /U131086T2F.BI>>: not found [No such file or directory]
-ksh: cat /P132086T2F.BI>>: not found [No such file or directory]

论坛徽章:
0
10 [报告]
发表于 2012-05-30 16:05 |只看该作者
提示找不到文件,你的结果已经传给shell了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP