• awk使用shell变量,shell获取awk中的变量值


    awk中使用shell中的变量

    : "'$var'"

    这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.:

    var="test"
    awk 'BEGIN{print "'$var'"}'

    这种写法其实际是双括号变为单 括号的常量,传递给了awk.

    如果var中含空格,为了shell不把空格作为分格符,便应该如下使用:

    var="this is a test"
    awk 'BEGIN{print "'"$var"'"}'
    : '"$var"'

    这种写法与上一种类似.如果变量含空格,则变为'""$var""'较为可靠.
    : export变量,使用ENVIRON["var"]形式,获取环境变量的值

    例如:
    var="this is a test"; export var;

    awk 'BEGIN{print ENVIRON["var"]}'
    :可以使用awk-v选项 (如果变量个数不多,个人偏 向于这种写法)

    例如:
    var="this is a test"
    awk -v awk_var="$var" 'BEGIN {print awk_var}'

    这样便把系统变量var传递给了awk变量awk_var.

     

     awkshell变量传递值

    awkshell传递变量,其思想无非是用awk(sed/perl等也是一样)输出若干条shell命令,然后再用shell去执行这些命令。

    eval $(awk 'BEGIN{print "var1='str1';var2='str2'"}')

    或者eval $(awk '{printf("var1=%s; var2=%s; var3=%s;",$1,$2,$3)}' abc.txt)

    之后可以在当前shell中使用var1,var2等变量了。

    echo "var1=$var1 ----- var2=$var2"

     

    from:http://cooliron.blog.163.com/blog/static/1247031382012112014010658/

     

  • 相关阅读:
    sql 同一行中,不同结果在不同列显示
    用jstl的if或when标签判断字符串是否为空
    RESTful 接口规范
    HTTP协议详解
    easyui datagrid 去除单击行选中事件
    easyui datagrid 选中行效果
    Nodejs
    VMware 中的win7虚拟机在一段时间后就会自动挂起
    Vmware 安装 ghost 版 win 7
    idea tomcat 乱码问题的解决及相关设置
  • 原文地址:https://www.cnblogs.com/wuyuetan/p/3781498.html
Copyright © 2020-2023  润新知