awk
awk -F: '{print 3}' /e·tc/passwd
BEGIN{} {} END{}
-F 对于每次处理的内容,可以指定一个子定义的分隔符,默认的分隔符是空白字符(空格或 tab 键 )
内部变量
0 保存当前正在处理的行内容
NR : 当前正在处理的行是 awk 总共处理的行号。
FNR: 当前正在处理的行在其文件中的行号。
NF :每行被处理时的总字段数
NR 最后一行
awk -F: 'BEGIN{OFS="---"} {print 1,1,3,$4}' /etc/passwd
ORS 输出记录分隔符, 默认是换行符.
printf函数
awk -F: '{printf "%-15s %-10s %-15s\n", 2,1,3}' /etc/passwd
%s 字符类型
%d 数值类型
%f 浮点类型
%-15s占15字符 - 表示左对齐,默认是右对齐
printf 默认不会在行尾自动换行,加 \n
awk -F: '/ {print 1 == "root" {}'
'/^(root|shark)/ {}'
比较表达式
== 等于 x==y
!= 不等于 x!=y
= 大于等于 x>=y
逻辑操作符和复合模式
&& 逻辑与, 相当于 并且
||逻辑或,相当于 或者
! 逻辑非 , 取反
行数范围(与sed相同)
起始表达式, 终止表达式
set -u
当脚本中遇到未定义的变量时报错
set -x
这个调试脚本是使用,可以看到每个执行的命令,和执行命令后的输出结果
set -e(对管道无效)
脚本中有任何命令的返回值是非零,脚本则停止继续执行
set -o pipefail
如果设置,如果管道中的所有命令都成功退出,则返回零。 默认情况下禁用此选项
网友评论