LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1087|回复: 7

gawk中如何引用外部变量?[基本解决]

[复制链接]
发表于 2004-3-29 08:45:29 | 显示全部楼层 |阅读模式
比如在bash脚本中定义了变量foo

在这个脚本中的gawk有可能引用到foo么?
如果能,howto
谢谢
 楼主| 发表于 2004-3-29 09:59:36 | 显示全部楼层
  1. export n=16;echo "123"|gawk 'BEGIN { for (i in ENVIRON) {if (i=="n") print i, ENVIRON[i];}  }';
复制代码


这是我的方法,不知道有没有更好的?
 楼主| 发表于 2004-3-29 10:29:11 | 显示全部楼层
  1. export n=16;echo "123"|gawk 'BEGIN {  print  ENVIRON["n"];  }';
复制代码

如是
发表于 2004-3-29 10:50:27 | 显示全部楼层
用awk的-v,
-v var=val
       --assign var=val
              Assign  the  value  val to the variable var, before execution of
              the program begins.  Such variable values are available  to  the
              BEGIN block of an AWK program.
  1. /home/javalee:echo 123|awk -v n=16 '{print $0*n}'
  2. 1968
复制代码
发表于 2004-3-29 14:27:21 | 显示全部楼层
根据cu的斑竹netman的解释是,awk引用系统变量其实很简单.只要把awk的语句同变量用'区分开.

如: awk '{if($1>'$1')print}'

这样系统变量$1就被引用到awk的语句中了.

一个例子:
n=50
cat /etc/passwd|awk -F: '{if($3>'$n')print}'

看语句的方法是:第一对''是awk语句,第二对''是awk语句,剩下的是变量

nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
sshd:x:74:74rivilege-separated SSH:/var/empty/sshd:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
mysql:x:500:500::/dev/null:/dev/null
 楼主| 发表于 2004-3-29 16:17:21 | 显示全部楼层
关健是要用''引用
发表于 2004-3-29 17:39:51 | 显示全部楼层
没那么复杂,;)
  1. /home/javalee:n=60
  2. /home/javalee:cat /etc/passwd |awk [color=red]-v str=$n[/color] '$3>[color=red]str[/color]'
复制代码
在[shell技巧区]里有这样的解决方法:
http://www.linuxsir.cn/bbs/showthread.php?threadid=44985
之<<shell变量传递给sed,awk,grep简单方法 >>
发表于 2004-3-29 17:40:03 | 显示全部楼层
没那么复杂,;)
  1. /home/javalee:n=60
  2. /home/javalee:cat /etc/passwd |awk [color=red]-v str=$n[/color] '$3>[color=red]str[/color]'
复制代码
在[shell技巧区]里有这样的解决方法:
http://www.linuxsir.cn/bbs/showthread.php?threadid=44985
之<<shell变量传递给sed,awk,grep简单方法 >>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表