您的位置:首页 > 健康 > 美食 > 家装设计图纸_移动互联网开发明日学院在线教育网页源码_培训机构哪家好_seo优化师培训

家装设计图纸_移动互联网开发明日学院在线教育网页源码_培训机构哪家好_seo优化师培训

2025/2/25 21:06:16 来源:https://blog.csdn.net/2402_86248291/article/details/144766207  浏览:    关键词:家装设计图纸_移动互联网开发明日学院在线教育网页源码_培训机构哪家好_seo优化师培训
家装设计图纸_移动互联网开发明日学院在线教育网页源码_培训机构哪家好_seo优化师培训

1.awk工具的使用

1.1 截取文档中的某个段

1)打印以 : 为分隔的第一个字段

[root@localhost ~]# head -n3 /etc/passwd | awk -F ':' '{print $1}'

2)注意事项

-F:作用是指定分隔符。如果不加分隔符,则以空格或者tab为分隔符

print:为打印的动作,用来打印某个字段

$1:为第一个字段,以此类推

$0:比较特殊,表示整行

注意awk的格式,-F后面紧跟单引号,单引号里面为分隔符。

print的动作要用{}括起来,否则会报错。

3)print还可以打印自定义的内容,但是自定义的内容要用双引号括起来

head -n3 /etc/passwd | awk -F ':' '{print $1"#"$2"#"$3"#"$4"#"}'

1.2 匹配字符或者字符串

1)跟sed用法类似,能实现grep的功能,但没有颜色显示

[root@localhost ~]# awk '/oo/' /etc/passwd

2)可以让某个段匹配,这里的~就匹配的意思

[root@localhost ~]# awk -F ':' '$1 ~/oo/' /etc/passwd

3)awk还可以多次匹配

awk -F ':' '/root/{print $1,$3} /sbin/ {print $1,$3}' /etc/passwd

1.3 条件操作符

1)awk可以用逻辑符号进行判断,比如==就是等于,也可以理解为精准匹配

[root@localhost ~]# awk -F ':' '$3=="0"' /etc/passwd

注意:在和数字比较时,若把比较的数字用双引号引起来,那么awk不会认为是数字,而会认为是字符,不加双引号则会认为是数字

2)把大于等于500的行打印出来

[root@localhost ~]# awk -F ':' '$3>=500' /etc/passwd

加引号的结果并不理想,这是因为awk把所有的数字当做字符了

[root@localhost ~]# awk -F ':' '$3>="500"' /etc/passwd

3)!=表示不匹配

针对某一个字段的字符进行逻辑比较

[root@localhost ~]# awk -F ':' '$7!="/sbin/nologin"' /etc/passwd

在两个段之间进行逻辑比较

[root@localhost ~]# awk -F ':' '$3<$4' /etc/passwd

4)还可以使用&&和||,它们分别表示“并且”和“或者”

&&的用法

[root@localhost ~]# awk -F ':' '$3<"7" && $3>"5"' /etc/passwd

||的用法

awk -F ':' '$3<"7" || $7=="/bin/bash"' /etc/passwd

1.4 awk的内置变量

1)awk常用的变量

OFS:OFS和-F选项有类似的功能,也可以用来定义分隔符,但是它是在输出的时候定义

NF:表示用分隔符分隔后一共有多少段

NR:表示行号

2)OFS的用法

[root@localhost ~]# head -5 /etc/passwd | awk -F ':' '{OFS="#"}{print $1,$2,$3}'

还有更高级的一些用法

awk -F ':' '{OFS="#"} {if($3>5) {print $1,$2,$3}}' /etc/passwd

3)变量NF的具体用法

[root@localhost ~]# head -n3 /etc/passwd | awk -F ':' '{print NF}'

$NF:表示最后一段的值

[root@localhost ~]# head -n3 /etc/passwd | awk -F ':' '{print $NF}'

4)变量NR的具体用法

[root@localhost ~]# head -n3 /etc/passwd | awk -F ':' '{print NR}'

还可以使用NR作为判断条件

[root@localhost ~]# awk 'NR>8' /etc/passwd

NR也可以配合段匹配一起使用

[root@localhost ~]# awk -F ':' 'NR<20 && $1 ~ /roo/' /etc/passwd

1.5 awk中的数学运算

1)awk可以更改段值

[root@localhost ~]# head -n3 /etc/passwd | awk -F ':' '$1="root"'

2)awk也可以对各个段的值进行数学运算

第七个字段等于第三个字段加上第四个字段整行的打印出来

head -n2 /etc/passwd | awk -F ':' '{$7=$3+$4;print $0}'

3)awk还可以计算某个段的总和

这里的END是awk特有的语法,表示所有的行都已执行

awk -F ':' '{(tot=tot+$3)}; END {print tot}' /etc/passwd

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com