Loading... <p> <strong><span style="font-size: 18px">3、awk的printf命令</span></strong></p> <p> 格式:printf format, item1 item2…</p> <p> 要点:</p> <p> (1) 要指定format;</p> <p> (2) 输出时不会自动换行,如需换行则需要给出\n;</p> <p> (3) format用于为后面的每个item指定其输出格式;</p> <p> (4) format格式的指示符都是%开头,后跟一个字符。</p> <p> format常用的字符:</p> <p> %c:显示字符的ASCII码</p> <p> %d,%i:十进制整数;</p> <p> %e,%E:科学计数法;</p> <p> %f:显示浮点数;</p> <p> %g,%G:以科学计数法格式或浮点数格式显示数值;</p> <p> %s:显示字符串;</p> <p> %u:显示无符号整数;</p> <p> %%:显示%自身。</p> <p> format中常用修饰符:</p> <p> #:显示宽度;</p> <p> -:左对齐;</p> <p> +:显示数值的符号;</p> <p> .#:取值精度。</p> <p> 实例1:以固定宽度20输出/etc/passwd文件中前10条记录的用户名和shell信息:</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703160901-38.jpg" title="1451027583534543.jpg" alt="1.jpg" /></p> <p> 上例中标注的部分含义为:两个字段都是以20个字符的宽度来显示,并且以换行符为每行的结束符。</p> <p> 实例2:将上例中的用户名以左对齐显示:</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703160901-46.jpg" title="1451027891544274.jpg" alt="2.jpg" /></p> <p> 实例3:将3.14159取2位小数显示:</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703160901-26.jpg" title="1451028126980072.jpg" alt="3.jpg" /></p> <p><strong><span style="font-size: 18px"> 4、awk的操作符</span></strong></p> <p> 算术操作符:</p> <p> x+y:加</p> <p> x-y:减 </p> <p> x*y:乘</p> <p> x/y:除</p> <p> x**(^)y:乘方</p> <p> x%y:取模</p> <p> -x:负值</p> <p> +x:转换为数值</p> <p> 字符串操作符:</p> <p> 连接:无需符号,直接将两个字符串放在一起就可以了;</p> <p> 赋值操作符:</p> <p> x=y:将y的值赋值给x;</p> <p> x+=y:将x+y的结果赋值给x;</p> <p> x-=y:将x-y的结果赋值给x;</p> <p> x/=y:将x除以y的结果赋值给x;</p> <p> x%=y:将x与y取模的结果赋值给x;</p> <p> x^=y或x**=y:将x取y次方的结果赋值给x;</p> <p> x++:将x+1的结果赋值给x;</p> <p> x–:将x+1的结果赋值给x;</p> <p> 注:如果模式自身是=号,要写为/=/</p> <p> 比较操作符:</p> <p> x<y:如果x小于y则为真;</p> <p> x<=y:如果x小于等于y则为真;</p> <p> x>y:如果x大于y则为真;</p> <p> x>=y:如果x大于等于y则为真;</p> <p> x==y:如果x等于y则为真;</p> <p> x~y:模式匹配,x能够被y模式所匹配为真。</p> <p> 逻辑操作符:</p> <p> x&&y:如果x为真则执行y;</p> <p> x||y:如果x为假则执行y。</p> <p> 条件表达式:</p> <p> selector ?if-ture-expression: if-false-expression</p> <p> selector:条件</p> <p> ?if-ture-expression:如果为真则执行此表达式</p> <p> :if-false-expression:否则执行此表达式</p> <p> 实例4:判断/etc/passwd文件中uid大于500则显示为"Common user",否则显示为“admin user":</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703160901-32-1.jpg" title="1451031871504107.jpg" alt="4.jpg" /></p> <p> <strong><span style="font-size: 18px">5、模式</span></strong></p> <p> (1)正则表达式</p> <p> 格式:/PATTERN/</p> <p> 实例5:只显示/etc/passwd文件中存在root的行:</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703160901-82.jpg" title="1451032329498004.jpg" alt="5.jpg" /></p> <p> (2)表达式</p> <p> 以比较表达式居多,其结果为非0或非空字符串时满足条件,awk仅处理满足条件的行。</p> <p> 实例6:只显示uid大于等于500的行:</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703160901-26-1.jpg" title="1451032503683123.jpg" alt="6.jpg" /></p> <p> (3)特殊模式</p> <p> BEGIN:在awk命令的program运行之前执行一次;</p> <p> END:在awk命令的program运行之后执行一次。</p> <p> 实例6:显示/etc/passwd文件中以root开头的行的用户名在人、UID、shell信息,显示时以逗号分隔各字段,并在输出结果后打印“THE END”。</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703160901-91.jpg" title="1451033850450162.jpg" alt="7.jpg" /></p> <p> (5)空模式</p> <p> 用于匹配任意行。</p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703160901-21.jpg" title="1451034170926634.jpg" alt="8.jpg" /></p> <p></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信