免费注册 查看新帖 |

Chinaunix

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

急!在awk中如何引用shell的变量  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-03-29 21:56 |只看该作者 |倒序浏览
NoFlow1=0
NoFlow0=1
while [$NoFlow1 -le 18]
do
      export NoFlow1
      while [$NoFlow0 -le 35]
      do
            export NoFlow0
            ns txy.tcl
            gawk -f txy.awk TRACE >> RESULT
            NoFlow0='expr $NoFlow0+1'
      done
      NoFlow0=1
      NoFlow1='expr $NoFlow1+1'
done

txy.tcl中要引用NoFlow0,NoFlow1两个变量,它运行产生的结果为TRACE.现在我要在txy.awk中
进行一个判断,当条件成立时,我需要记录此时上面两个变量NoFlow0,NoFlow1的值,(这两个值在TRACE中没有); 并且要跳出循环,请问谁能帮我?

或者,把判断移到shell script上来,gawk -f txy.awk TRACE > RESULT,对RESULT里面的数据
进行判断,当条件成立时,记录此时NoFlow0,NoFlow1的值, 把他们放到一个新文件内,并且跳出循环,请问如何做?

谢谢各位!

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
2 [报告]
发表于 2002-03-30 09:40 |只看该作者

急!在awk中如何引用shell的变量

awk里面是支持系统环境变量的,但是不知道怎样使用用户自定义的局部变量。
只是见过有这样的用法: ENVIRON["EDITOR"]="Vi"
参考一下,尝试一下。

论坛徽章:
0
3 [报告]
发表于 2002-03-30 17:58 |只看该作者

急!在awk中如何引用shell的变量

[这个贴子最后由valentine在 2002/03/30 06:28pm 编辑]

"'$varible'"
or
ENVIRON["varible"]

论坛徽章:
0
4 [报告]
发表于 2002-03-31 10:50 |只看该作者

急!在awk中如何引用shell的变量

Hi, 我已经把问题解决了,非常感谢各位的帮助!!!

论坛徽章:
0
5 [报告]
发表于 2002-04-01 08:59 |只看该作者

急!在awk中如何引用shell的变量

awk里面好像不能使用用户自定义的局部变量,比较头大!

论坛徽章:
0
6 [报告]
发表于 2002-04-01 10:59 |只看该作者

急!在awk中如何引用shell的变量

没有听懂提问者locust的意思,不过见到大家在讨论awk中引用用户自定义变量的问题,不禁要来说两句。有点儿像我在如何设置动态变量帖(http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=11&topic=134&show=0)中讨论的问题一样,这个问题同样也是可以解决的,准确理解shell的解释机制和引号的功能,就可以想到这一点。(注意使用中的双引号而不是单引号,关于双引号和单引号的区别与利用,我会找时间专门整理成文。)请看:
#!/bin/sh

text='Thisisatext'
mytext='abcd'
echo $text|awk "{print \"$mytext\"}"
输出结果就是......
“abcd”

论坛徽章:
0
7 [报告]
发表于 2002-04-01 14:04 |只看该作者

急!在awk中如何引用shell的变量

michaleds说的不错。
在“”里$,`,\是视为特殊字符。
而在‘’里它们是普通字符。
这样,我们通常可以用三种形式在awk中使用环境变量了。

论坛徽章:
0
8 [报告]
发表于 2002-04-02 09:16 |只看该作者

急!在awk中如何引用shell的变量

比较干脆的解决方法是使用awk的兄弟nawk,用法如下:

A=44
echo "ABCD" | nawk -v GET_A=$A '{print GET_A}'
....

注意nawk -v ,其作用就是类似为常数赋值的作用,每赋值一个常数加一个“-v”,如:

echo "ABCD" | nawk -v GET_A=$A -v GET_B=$B '{print GET_A GET_B}'


我之前提供的nawk文档对此项功能有说明,请细看。

论坛徽章:
0
9 [报告]
发表于 2002-04-02 10:06 |只看该作者

急!在awk中如何引用shell的变量

但是最易用的方法我认为还是valentine说的awk '{print "'$str'"}'

论坛徽章:
0
10 [报告]
发表于 2002-04-02 10:12 |只看该作者

急!在awk中如何引用shell的变量

咸鱼白菜,各人所好。呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP