Chinaunix首页 | 论坛 | 博客
  • 博客访问: 216164
  • 博文数量: 76
  • 博客积分: 2231
  • 博客等级: 大尉
  • 技术积分: 826
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-27 09:15
文章分类

全部博文(76)

文章存档

2011年(76)

分类: LINUX

2011-11-26 08:50:29

将一个文件里的内容使用awk赋值给一个shell数组
awk  -F'\t' ' { a[NR]=$1 }; END{  for(i=1;i<=NR; i++) {  print  a[i];  } } ' file.txt
#!/bin/sh
if [ $# != 1 ] ; then echo "one time pattern string parameter is required"; exit 1; fi
find  /var/log/  -type f   -print0 | xargs -0  awk   '$0 ~ "'"$1"'"'
#!/bin/sh
if [ $# != 1 ] ; then echo "one time pattern string parameter is required"; exit 1; fi
find  /var/log/  -type f   -print0 | xargs -0  awk   '$0 ~ pattern'   pattern="$1"

a="123hi"
echo "双引号括单引号"|awk '{print "'$a'"}'                    #123hi  显示正确
echo "单引号括双引号"|awk '{print '"$a"'}'                    #123     只显示数字
echo "双引号括单引号再括双引号"|awk '{print "'"$a"'"}'    #123hi   显示正确

a="1 2 3 hi"
echo "双引号括单引号"|awk '{print "'$a'"}'                    #出错     无法显示空格
echo "单引号括双引号"|awk '{print '"$a"'}'                    #123     空格丢失,只显示数字
echo "双引号括单引号再括双引号"|awk '{print "'"$a"'"}'    #1 2 3 hi 显示正确

string=23skidoo1
echo | awk '{ print substr("'$string'",3,4)}'  
echo | awk '{ print substr("$string",3,4)}'  
echo | awk '{ print substr('$string',3,4)}'  
echo | awk '{ print substr('"$string"',3,4)}'

输出依次为
skid
trin



Q4:如何在sed/awk中使用shell中的变量?反之呢?
A:1.关于awk使用shell变量的总结 ... &extra=page%3D1
2.利用shell作变量替换(具体原理看13问之qouting)

    var=abcd
    sed:sed -n "/$var/p"   // awk: awk '/'"$var"'/'
    num=2
    sed: sed -n "${n}p"   //awk: awk 'NR=='"$var"''
    #sed要用双引号,awk变量顺序单双$var双单

反之:sed/awk将变量传给shell可以用eval, 如

    eval $(awk 'BEGIN{print "a=ggg b=3"}')
    然后
    echo $a;echo $b
    测试一下
阅读(1865) | 评论(0) | 转发(0) |
0

上一篇:shell传参给awk

下一篇:mac转换

给主人留下些什么吧!~~