免费注册 查看新帖 |

Chinaunix

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

[文本处理] 如何在一個迴圈中使用二個變數 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-18 16:51 |只看该作者 |倒序浏览
本帖最后由 play9091 于 2012-09-18 16:52 编辑

小弟我遇到一個問題。

我想在一個迴圈裡面使用二個變數。不知道是否可行?

例:
文檔一:
  1. 12345
  2. 23456
复制代码
文檔二:
  1. 00
  2. 01
复制代码
我想要它們輸出後變成這個樣子:
  1. log start 12345
  2. get 00
  3. log finish
  4. log start 23456
  5. get 01
  6. log finish
复制代码
百思不得其解……請先進指教!

论坛徽章:
0
2 [报告]
发表于 2012-09-18 17:58 |只看该作者
  1. awk '{if(i=!i)print "log start",$0; else{print "get",$0;print "log finish"}}' f1 f2
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-09-18 18:06 |只看该作者
本帖最后由 play9091 于 2012-09-18 18:21 编辑

WOW~ AWK 真的很強大,但是小弟還不會用……嘆~

感謝先進的指教……試試看放到糸統裡面可不可以用!

另外想請教一下……如果變數的二邊有其它的字串的話,該怎麼處理??

例:
  1. awk '{if(i=!i)print "l+m output/",$0,".GsmRelation";else{print "get",$0;print "log finish"}}' f1 f2
复制代码
產生出來的 Command 會變成
  1. l+m output/ N5660 .GsmRelation
复制代码
在變數 "N5660" 的二邊有空格也,因為我想要把它指定到一個路俓,這該怎麼解決??

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2012-09-18 18:40 |只看该作者
本帖最后由 jason680 于 2012-09-18 18:41 编辑

回复 3# play9091

don't use comma"," in print

print "l+m output/",$0,".GsmRelation"
change to
print "l+m output/"$0".GsmRelation"

sometime you will print two variable(ex:A and C) in print without space
print AC
but it cat not work fine.

you can add empty string between A and C
print A""C

论坛徽章:
0
5 [报告]
发表于 2012-09-18 18:41 |只看该作者
回复 1# play9091

plpy9091不好意思哈,刚才我那个写法是错误的,实现不了你的要求,按照那个写法,输出的是:
  1. log start 12345
  2. get 23456
  3. log finish
  4. log start 00
  5. get 01
  6. log finish
复制代码
你要求的是:
  1. log start 12345
  2. get 00
  3. log finish
  4. log start 23456
  5. get 01
  6. log finish
复制代码
我现在能想到可以实现的是
  1. paste f1 f2| awk '{print "log start",$1;print "get",$2;print "log finish"}'
复制代码
不过这样写太弱了...

论坛徽章:
0
6 [报告]
发表于 2012-09-18 18:54 |只看该作者
楼主要的是文件f1和f2依次各取一行。
awk '{if(NR==FNR){a[NR]=$0} else{print "log start",a[FNR];print "get",$0;print "log finish"}}' f1 f2

回复 2# hxre_cu


   

论坛徽章:
0
7 [报告]
发表于 2012-09-18 19:06 |只看该作者
回复 6# smallpboy

是的,我一开始看错了..awk的数组不熟  学习!  


   

论坛徽章:
0
8 [报告]
发表于 2012-09-18 21:52 |只看该作者
本帖最后由 play9091 于 2012-09-20 12:21 编辑

用先先們給的Command拼不出我要的東西也……嘆……我太弱了!

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP