awk 常用

awk ‘{print NR}‘ aa.txt 变量NR,记录号
awk ‘END {print}‘ aa.txt 最后一行
awk ‘/22$/‘ aa.txt 以22结尾的
awk ‘/^birdman/‘ aa.txt 以birdman开头的的
awk ‘/\<^birdman.*22$\>/‘ aa.txt 以birdman 开头 22结尾的行
awk ‘/\<^birdman.*22$\>/{print $2}‘ aa.txt 以birdman 开头 22结尾的行打印第二列
awk -F‘[._]‘ ‘{print $2}‘ aa.txt  指定.和_为域分隔符
awk ‘/\<^(birdman|aa).*(22|33)$\>/‘ aa.txt 以birdman或aa开头,22或33结尾的行
awk ‘/\<^[78].*[23]$\>/‘ aa.txt
awk ‘/^[89].*3$/‘ aa.txt 匹配以8或9开头 以3结束的行
awk ‘/birdman/{print $5+10}‘ aa.txt  匹配birdman的行的第五列加10
awk ‘/birdman/{print ($5 > 1633 ? "ok" : "error")}‘ aa.txt  匹配birdman的行,如果第五列大于1633则打印?后面的ok,否则大于:后面的error
awk ‘$1 != "birdman_0013"‘ aa.txt $1不等于birdman_0013则打印
awk ‘/^<SITES>/,/^<\/SITES>/‘ /game/server/webapp/client/config.xml 打印以<SITES>开头的行,到</SITES>开头的行的所有内容
sed 可用
sed -n "/<SITES\>/,/<\/SITES>/p" config.xml

awk ‘{if ($3=="/dev/sda2" && $9 =="/usr/local") print $0}‘ 7z.log
awk ‘{if ($3=="/dev/sda2" || $9 =="/usr/local") print $0}‘ 7z.log 
awk ‘$1 ~/^[0-9].*[0-3]$/‘ aa.txt

awk 变量
awk ‘/birdman/{count=$5*3;print count}‘ aa.txt  匹配birdman的行,赋予一个变量count,为第三列*3,并打印
awk ‘BEGIN {for(x=0;x<=100;x+=1) print x}‘
a=‘$1,$2,$3,$4,$5‘;TMP=`mktemp`;echo ‘{print ‘$aa‘}‘>$TMP;awk -F"\t" -f $TMP aa.txt
awk ‘{sum+=$1}END{print sum}‘ file 将第一列相加

if else:
awk ‘{if ($5>22) print $5  " bad ";else print $5 " ok"}‘ aa.txt
awk ‘{if ($5>100) {count++;print $5} else {count--; print $1}}‘ aa.txt
if 多重判断
df -h|awk ‘{if ($5>70) {count++;print ""} else if ($5>100) {count++;print "cc"} else { print "cc"}}‘
df -h|grep -P "/$"|sed ‘s/%//‘|awk ‘{if ($4>90) {count++;print "Error"} else if ($4>70) {count++;print "Warning"} else { print "Ok"}}‘
将外部变量传入到 awk 中
将外部变量传入到awk + if 多重判断
SITE=$1
df -h|grep -P "/$"|sed ‘s/%//‘|awk -v SITE=$SITE ‘{if ($4>90) {count++;printf SITE;print "Error"} else if ($4>70) {printf SITE;print
 " Warning "} else { printf SITE;print " Ok "}}‘

时间: 2024-10-17 20:34:00

awk 常用的相关文章

linux awk常用操作(快速将fasta格式的序列改成一行显示)

Some time when you want to change the fasta seq into one line For awk:         awk '/^>/&&NR>1{print "";}{ printf "%s",/^>/ ? $0" ":$0 }'  YourFile > newfilename For sed:             sed -n '1{x;d;x};${H;x

linux awk常用命令【转载】

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

字符及文本处理之awk:awk常用函数

常用的内置函数 1.split 语法:split(string, array [, fieldsep [, seps ] ]) 功能:将string表示的字符串以fieldsep为分隔符进行分隔,并将分隔后的结果保存至array为名的数组中: 数组下标为从1开始的序列: [[email protected] ~]# df -h|awk '!/^File/ {split($5,USE,"%");print USE[1]}' 17 0 7 7 [[email protected] ~]# 

awk常用函数用法

length函数返回字符串的长度 # echo "xiaoming235" | awk '{print length}' 11 # awk -F ":" 'length($NF)>13 {print $0}' /etc/passwd shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown gsub使得在所有正则表达式被匹配的时候都发生替换 0001|20081223efskjfdj|EREADFASDLKJCV 0002|20

awk常用命令总结

awk工具,主要将一行分成“字段”来处理. awk '条件类型1{动作1} 条件类型2{动作2}...‘ filename awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[tab]键 last -n 4 | awk '{ print $1 "\t" $3}' 变量$0代表一整行数据的意思 awk是以行尾一次处理的单位,而以字段尾最小的处理单位 变量NF 代表每一行($0)拥有的字段总数 变量NR 代表目前awk所处理的是“第几行”数据 变量FS 代表目前的分割字符

awk常用的几个统计命令

1.awk 求和 cat ckl.txt |awk '{sum+=$1} END {print "Sum = ", sum}' 2.awk cat ckl.txt|awk '{sum+=$1} END {print "Average = ", sum/NR}' 3.awk cat ckl.txt|awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}' 4.a

awk常用用法技巧举例

1.awk中的!a[$0]++与!a[$1]++的使用 !a[$0]++可以去除一行中重复的记录,例子如下: [[email protected] shell]# cat 1.txt  a a b b c c e f g a f [[email protected] shell]# awk '!a[$0]++' 1.txt  a b c e f g 解释:a[$0]就是以每一行内容为索引的一个hash表,当a[$0]未声明时,a[$0]为假,在未声明的情况下,进行一次a[$0]++后,a[$0]

awk常用选项举例

1.awk 的语法 awk [选项] ' print $1' 文件名 选项 -F  指定分隔符 比如: awk -F: '{ print $1 }' /etc/passwd $NF  最后一列 NR  行数       //注意没有$ 2.awk举例 1.提取出/etc/passwd 文件当中,UID小于1000的用户名信息和UID信息 [[email protected] ~]# awk -F : ' $3<1000  {print $1,$3}' /etc/passwd 2.提取出/etc/

sed和awk常用命令式例

sed  循环 一行一行的处理文件     行处理sed -n '/abc/p' file 默认会打印模式空间的内容行中匹配abc的打印出来  -r  支持扩展分割符-n不让默认打印模式空间  sed [email protected] sed 's/abc/def' file  远程登录后修改file里的内容sed -n '5p' file 把第五行打印出来sed -n '$p' file  把最后一行打印出来sed -n '1,3p' file  把一到三行打印出来sed -n '1,~3p