awk和set

2019-08-07  本文已影响0人  zxhChex

awk
awk -F: '{print 1,3}' /e·tc/passwd
BEGIN{} {} END{}
-F 对于每次处理的内容,可以指定一个子定义的分隔符,默认的分隔符是空白字符(空格或 tab 键 )
内部变量
0 : awk变量0 保存当前正在处理的行内容
NR : 当前正在处理的行是 awk 总共处理的行号。
FNR: 当前正在处理的行在其文件中的行号。
NF :每行被处理时的总字段数
NF 就是最后一个字段NR 最后一行
awk -F: 'BEGIN{OFS="---"} {print NF} END{print"---"}' /etc/passwd FS : 输入行时的字段分隔符,默认空格 awk 'BEGIN{FS=":"} {print1,3}' /etc/passwd OFS : 输出字段分隔符,默认是一个 空格 awk 'BEGIN{FS=":"; OFS="+++"} /^root/{print1,2,3,$4}' /etc/passwd
ORS 输出记录分隔符, 默认是换行符.

printf函数
awk -F: '{printf "%-15s %-10s %-15s\n", 1,2,3}' /etc/passwd awk -F: '{printf "|%-15s| %-10s| %-15s|\n",1,2,3}' /etc/passwd
%s 字符类型
%d 数值类型
%f 浮点类型
%-15s占15字符 - 表示左对齐,默认是右对齐
printf 默认不会在行尾自动换行,加 \n

awk -F: '1 ~ /^(root|shark)/ {print 0}' /etc/passwd awk -F':' 'BEGIN{} {动作;命令} END{}' file1 -F'[]' 正则表达式 '/root/ {}' '/^root/{}' '1 == "root" {}'
'/^(root|shark)/ {}'
比较表达式
== 等于 x==y
!= 不等于 x!=y

= 大于等于 x>=y
逻辑操作符和复合模式
&& 逻辑与, 相当于 并且
||逻辑或,相当于 或者
! 逻辑非 , 取反

行数范围(与sed相同)
起始表达式, 终止表达式

set -u
当脚本中遇到未定义的变量时报错
set -x
这个调试脚本是使用,可以看到每个执行的命令,和执行命令后的输出结果
set -e(对管道无效)
脚本中有任何命令的返回值是非零,脚本则停止继续执行
set -o pipefail
如果设置,如果管道中的所有命令都成功退出,则返回零。 默认情况下禁用此选项

上一篇 下一篇

猜你喜欢

热点阅读