1.字段以:分隔,打印第一列
awk -F":" '{print $1}' /etc/passwd
2.字段以:分隔,打印第一列和第三列
awk -F":" '{print $1 $3}' /etc/passwd
awk -F":" '{print $1":"$3}' /etc/passwd
3.文件形式的执行
vim test.awk 写入
BEGIN {FS=":"}
{print $1}
awk -f test.awk /etc/passwd
4.普通过滤代码块
字段以:分隔,输出 以a开头的第一列数数据
awk 'BEGIN{FS=":"} /^a/{print $1}' /etc/passwd
字段以:分隔,输出第一列为root的一行数据
awk 'BEGIN{FS=":"} $1=="root"{print $0}' /etc/passwd
字段以:分隔,输出第七列为nologin的第一列数数据
awk 'BEGIN{FS=":"} $7 ~ "nologin"{print $1}' /etc/passwd
字段以:分隔,输出不包含nologin 的第一列数数据
awk 'BEGIN{FS=":"} !/nologin/{print $1}' /etc/passwd
5.字段分隔符(FS)
FS="\t+" 一个或者多个TAB分隔
FS="[[:space:]+]" 一个或者多个空白分隔 ,默认的
FS="(foo|:)" 以foo或者:分隔
6.字段数量(NF)
NF: number of fileds 字段数量,通常只读
NF==3{print "字段为3的行:" $0}
第二列之后的数据
{
if(NF>2){
print $1 $2 $3
}
}
7.记录数量(NR)
NR: number of records 记录(行)数量,当前awk遍历过的函数,动态变化
NR==3{print "第三行"}
跳过前10行
{
if(NR>10){
print $0
}
}
8.FS和RS例子
my.txt
路人甲
电话:110
手机:138110
路人乙
电话:120
手机:138120
awk 'BEGIN{FS="\n";RS=""} {print $1"\t"$2"\t"$3}' my.txt
说明: FS="/n" 每一列以\n(换行)来分隔, RS=""每一行以空格来分隔
结果如下
路人甲 电话:110 手机:138110
路人乙 电话:120 手机:138120
9.OFS和ORS
OFS:字段输出分隔符,默认是" "
ORS:记录输出分隔符,默认为"\n"
my.txt
路人甲
电话:110
手机:138110
路人乙
电话:120
手机:138120
awk 'BEGIN{FS="\n";RS="";OFS="\t";ORS="\n"} {print $1,$2,$3}' my.txt
说明:
FS="/n" 每一列以\n(换行)来分隔, RS=""每一行以 【空行】 来分隔
OFS="/t" 每一列输出用 \t 来分隔, ORS=""每一行以 \n换行 来分隔
结果如下
路人甲 电话:110 手机:138110
路人乙 电话:120 手机:138120
10.循环语句
my.txt
路人甲
电话:110
手机:138110
路人乙
电话:120
手机:138120
QQ:123456
awk 'BEGIN{FS="\n";RS="";ORS=""} {for(x=1;x<=NF;x++){print $x"\t"}print "\n"}' my.txt
结果如下
路人甲 电话:110 手机:138110
路人乙 电话:120 手机:138120 QQ:123456
已有 0 条评论