(八)awk命令

一: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" }  '

相关文章
相关标签/搜索