免费注册 查看新帖 |

Chinaunix

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

[文本处理] 【结贴】如何在awk中将系统命令输出的结果赋给一个变量? [复制链接]

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-22 15:23 |显示全部楼层 |倒序浏览
本帖最后由 davidbeckham921 于 2012-10-22 18:01 编辑

cat 1.cfg
#11111111
#22222222

cat 2.cfg
#33333333
#44444444

awk 'substr($0,1,1)=="#"{printf $0" "} k=system("basename "FILENAME){print "123 "k}' `ls ../awk/*.cfg`
#11111111 1.cfg
#22222222 1.cfg
#33333333 2.cfg
#44444444 2.cfg

想要
#11111111 123 1.cfg
#22222222 123 1.cfg
#33333333 123 2.cfg
#44444444 123 2.cfg

这种效果。

文件列表ls ../awk/*.cfg这个是因为有绝对路径,只想要文件名。用awk应该怎么写呢?
----------------------------------

7楼和10楼是我想要的。谢谢大家!

7楼jason680
cmd="basename "FILENAME; cmd | getline k;

10楼L_kernel

$ awk 'substr($0,1,1)=="#"{printf $0" "}{"basename "FILENAME | getline k;}{print "123 "k}' `ls ../awk/*.cfg`

#11111111 123 1.cfg

#22222222 123 1.cfg

#33333333 123 2.cfg

#44444444 123 2.cfg

再次感谢各位热心帮忙!谢谢!

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
2 [报告]
发表于 2012-10-22 16:06 |显示全部楼层
回复 2# zooyo


    谢谢!不错的办法,但是我还得要部分文件内容。

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
3 [报告]
发表于 2012-10-22 16:08 |显示全部楼层
回复 3# ljwd1000


    谢谢!正则替换掉路径,然后输出。满足需求。

   但是如果想用系统命令的输出结果,应该怎么写呢?

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
4 [报告]
发表于 2012-10-22 17:51 |显示全部楼层
回复 9# blackold


    好久没见黑哥!哈哈表达能力有限黑哥见谅。

sub确实可以满足,但是就是想知道我在awk里执行系统命令的结果怎么能赋给一个变量,方便在awk里调用。

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
5 [报告]
发表于 2012-10-22 17:52 |显示全部楼层
回复 7# jason680


  nice!就是这个意思。以后可以用别的系统命令获取变量了。3q!

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
6 [报告]
发表于 2012-10-22 17:54 |显示全部楼层
回复 8# yestreenstars


    7楼和10楼已经解决我要的东西了。谢谢!

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
7 [报告]
发表于 2012-10-23 13:57 |显示全部楼层
回复 14# blackold


    惭愧啊,干了段别的事情。有些东西都忘记了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP