将一个文件里的内容使用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) |