一:printf 格式化输出bash
%ns: 输出字符串。n 是数字指代输出几个字符spa
%ni: 输出整数。n 是数字指代输出几个数字blog
%m.nf: 输出浮点数。m 和 n 是数字,指代输出的整数位数和小数位数。如%8.2f字符串
表明共输出 8 位数,其中 2 位是小数,6 位是整数。it
split , substr , strlenawk
输出格式:变量
\a: 输出警告声音grep
\b: 输出退格键,也就是 Backspace 键im
\f: 清除屏幕数据
\n: 换行
\r: 回车,也就是 Enter 键
\t: 水平输出退格键,也就是 Tab 键
\v: 垂直输出退格键,也就是 Tab 键
printf '%s' $(cat student.txt)
printf '%s\t %s\t %s\t %s\t %s\t %s\t \n' $(cat student.txt)
3: awk 基本使用
awk ‘条件 1{动做 1} 条件 2{动做 2}…’ 文件名
条件(Pattern):
通常使用关系表达式做为条件。这些关系表达式很是多,具体参考表 12-3 所示,例如:
x > 10 判断变量 x 是否大于 10
x == y 判断变量 x 是否等于变量 y
A ~ B 判断字符串 A 中是否包含能匹配 B 表达式的子字符串
A !~ B 判断字符串 A 中是否不包含能匹配 B 表达式的子字符串
(1)格式化awk输出
awk '{printf $1 "\n"}' student.txt
printf '%s' $(cat student.txt)
awk '{printf $2 "\t" $6 "\n"}' student.txt
#输出第二列和第六列
(2)条件输出打印分数》90同窗的姓名
grep -v "Name" student.txt | awk '$4>=90{ printf $2 "\n" }'
(3)awk执行过程
1: 若是有 BEGIN 条件,则先执行 BEGIN 定义的动做
2: 若是没有 BEGIN 条件,则读入第一行,把第一行的数据依次赋予$0、$一、$2 等变量。其中$0表明此行的总体数据,$1 表明第一字段,$2 表明第二字段。
3: 依据条件类型判断动做是否执行。若是条件符合,则执行动做,不然读入下一行数据。若是没有条件,则每行都执行动做。
1 读入下一行数据,重复执行以上步骤。
4: awk 内置变量
$1 表示第一列等
$0 表明目前 awk 所读入的整行数据。咱们已知 awk 是一行一行读入数据的,$0 就表明当前读入行的整行数据。
$n 表明目前读入行的第 n 个字段。
NF 当前行拥有的字段(列)总数。
NR 当前 awk 所处理的行,是总数据的第几行。
FS 用户定义分隔符。awk 的默认分隔符是任何空格,若是想要使用其余分隔符(如“:”),就须要 FS 变量定义。
例子:根据 FS定义分隔符查看用户
cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN {FS=":"} {printf $1 "\t\n" } '