awk example

来源:互联网 发布:绿盾防泄密软件 编辑:程序博客网 时间:2024/05/01 17:13

 0 awk is often used like below:

a=OFC30L40.0

awk -F [A-Z]  '{print $1}'

awk use to get column ;

 

awk only use to regular express to match  judge.

use embedded function to replace , such as : gsubstr


1 这个程序的亮点,是shell中用awk正则的条件判断
ls -ltr |while read line
do
filename=`echo $line|nawk '{print $9}'`
corename=`echo $filename| nawk '/^core/ {print}'`
if [ "$corename" != "" ]
then
echo $corename
file $corename
fi
done


2 assignment:

it different from shell.

shell is right

a=10

c=$a

awk is error

a=OFC30L40.0

echo $a |nawk '{ if (/OFC([0-9]+)L([0-9]+).0/) { b=$a;exit 10;} else { exit 11;} }'


  ls  -l |nawk '{if($3 ~ /^[0-9]*$/){print $0}}'
 for x in `ls`; do name=`ls -ld $x | nawk -F" " '{print $3}'`; id $name > /dev/null 2>&1; if [ $? -ne 0 ]; then ls -ld $x; fi; done


4

awk 可以接文本or 管道
如e=`echo $c|nawk -F "." '{print $4}'`
nawk -F "." '{print $4}' filename-----------------------------------nawk 基本用法,长的就是这样
不能接字符串

 nawk -F "." '{print $4}' string 不行
 
从理论上,字符串不属于标准输入输出吗。所以awk不能接


5 RS, NR

p=$( echo "$LoadName" | nawk -v RS="." 'END{print NR-1}' )\
LoadName=OFC33L40.0
RS表示分行。不是分割字段。NR表示行号
以"."分割OFC33L40.0变成两个record. 一个是OFC33L40一个是0.NR等于2. print 2-1 即1

-v表示变量定义,在awk中任何变量都要用它定义

solaris 用nawk不能用awk


6

awk '{while(getline line < "1.txt"){ print $0 OFS line; $0 = "  "}; close("1.txt")}' 2.txt

原创粉丝点击