awk文本处理

awk模式

模式类型:

  1. 正则表达式
  2. 关系表达式
  3. 组合的Pattern
  4. Pattern1,Pattern2
  5. BEGIN
  6. END

1,正则表达式
模式类型可以为正则表达式,正则表达式的规则需要写在//中
实例:
查询当前目录下包含se或者sh的记录:

ll ~ | awk '/s[eh]/{print $0}'

在这里插入图片描述
2,关系表达式

运算符含义
<小于
<=小于等于
==等于
!=不等于
>=大于等于
>大于

实例:
查询当前目录下大于800字节的文件或者目录

ll ~ | awk '&5>800{print $0}'

在这里插入图片描述
3,组合的模式
实例:
查询当前目录下大于800字节小于8000字节的文件或者目录

ll ~ | awk '$5 > 800 && $5 < 8000{print $0}'

在这里插入图片描述
4,pattern1,pattern2
实例:
匹配当前文件夹下从等于200字节的文件和目录一直匹配到等于4000字节的文件和目录

ll ~ | awd '$5==807,$5==472{print $0}'

在这里插入图片描述
5,BEGIN
BEGIN 模式指定的操作是在读取任何输入之前执行,且只执行一次。
实例:
在打印出当前文件下所有文件和目录之前打印1到9

ll ~ | awk 'BEGIN{print "1 2 3 4 5 6 7 8 9"}{print}'

在这里插入图片描述
6,END
END 模式指定的操作是在读取所有的输入后执行
实例:
在打印出当前文件夹下所有的文件和目录后,打印print–end!

ll ~ | awk '{print}END{print "print--end!"}'

在这里插入图片描述

awk命令基本选项

awk [-F fs] [-v var=value] [-f prog-file] [ 'program text' ] [file...]
  • -F:预先指定字段分隔符(默认是空格)
  • -f:指定awk命令要执行的程序文件
  • -v:预先为awk程序指定变量

-F
实例:
打印/etc/passwd的内容用冒号分隔:

awk -F: '{print $1}' /etc/passwd

在这里插入图片描述
-f
实例:
打印出testf的内容
新建testf文本:

vim testf
BEGIN{print "hello lcc"}
awk -f testf

在这里插入图片描述
-v
实例:

var=100
echo | awk -v variable=$var '{print variable}'

在这里插入图片描述

awk内置变量

变量名说明
FIILENAME当前输入文件名,如有多个文件,则只表示第一个
$0当前记录的内容
NF当前记录字段数,列数
$NN表示字段号,最大值为NF变量的值
FS字符按分割符,默认为空格
RS输入记录分隔符,默认为“\n”,即一行为一个记录
NR已经读入的记录数,行数
FNR当前输入文件的记录数
OFS输出字段分割符,默认为空格
ARGC命令行参数的数目
ARGIND命令行中当前文件的位置
ARGV命令行参数的数组

新建test.txt

vim test
I love linux
www.linux.com

实例1:
将test的每一个字符按单独显示为一行

awk '{print $1 "\n" $2 "\n" $3}' test

在这里插入图片描述
实例2:
将test的第二行中的点换成以空格分割

awk '{print $1 "\t" $2 "\t" $3}' test

在这里插入图片描述

计算文件总大小

新建num文件:

vim num
BEGIN{
	print "BYTES","\t","FILE"
}
{
	sum+=$5
	filenum++
	print $5,"\t",$9
}
END{
	print "Totle:",sum,"bytes("filenum-1 "files)"
}

在这里插入图片描述

格式化打印

常用的三个:

  • %s:字符串
  • %d:十进制整数
  • %f:浮点格式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值