1.AWK
--处理文本的编程语言工具
awk '条件 {动作} 条件 {动作}...' filename --->操作的文件名
--语言基础是,只要查找与命令行中有模式匹配,就去执行一系列的指令,
--扫描文件中的每一行,查找与命令行中给定的内容相匹配的模式,执行指令,没 有,执行下一行
2.{}在程序中不需要始终出现,用于特定模式的一系列指令进行分组。
3.一行就是记录,每条记录可以包含若干字段,字段的分隔符是空格或者是制表符。记录的分隔符是换行,
4.模式
使用匹配模式,可以对特定的记录进行操作,模式匹配最简单形式的搜索,匹配项目包含在斜线中/pattem/
---例子 ---> awk '/and/ {print $3}' filename
print打印
打印出记录中包含有“and”的第三个字段
也可以不用{},打印出模式匹配的记录
2).echo中的特殊字数
\n --> 换行
\t -->制表
\b --> 退格
\f -->进纸
\r -->回车
3).搜索多个模式匹配,用通道符号(|)分隔
例子:awk 'patten1|patten2{}' filename
--注意-->模式匹配中空格也是一个字符
4).对特定的字段进行模式匹配,通过代字号(~)以及特定字段说明
例子:awk'$1~ /petten/' filename
--匹配记录中字段1为patten的记录
5).代字号(!~)
例子:awk'$1 !~ /petten/' filename
-->匹配记录中字段1不为patten的记录
2.或括号和字段分隔符
1).花括号
只有一对括号时,括号内的所有操作同事发生
有多对括号时,这条记录执行完第一组命令,完成后执行第二组操作
2).分隔符
--字段分隔符默认是空格或者是制表符
1.当想要使用别的字符当做分隔符时使用可以使用 ==>命令行参数-F或者是程序中指定变量FS。
awk '{FS = "自定义字符"} {print $2}'filename
awk -F自定义字符'{print $2}'filename
2.通过使用--输出字段分隔符(OPS)变量,可以在程序中更改分隔符特性
awk -F" " '{OFS = "---"} {print $1,$2,$3,$4}' ancient.txt
师太,穿错了,那是我的袈裟---------
look---and---see---
look---and---addfd---
wo---shi---sun---wu
时间渐渐磨去了年少轻狂,---也渐渐沉淀了冷暖自知----时间寄语---
how:old:are:you---------
I:fine:thanks---------
look---and---see---
root@hecs-x-medium-2-linux-20200416095858:~/school#
字段分隔符时空格,现在改成(--)这样的分隔符
3.打印是为每行编号 -->使用NR变量
例子 awk '{print NR $1,$2,$3,$4}' filename