linux流读取文件内容命令,Linux基础篇之文本、数据流处理命令

本文详细介绍了Linux中用于文本和数据处理的awk命令,包括打印输出、过滤记录、字符串匹配、拆分文件、统计和使用脚本处理数据等操作。此外,还讲解了流编辑器sed的使用,包括s命令进行替换、多个匹配、圆括号匹配以及基本知识点。这些工具在Linux系统管理和数据分析中非常实用。
摘要由CSDN通过智能技术生成

1 awk:文本和数据处理工具

awk擅长于对数据进行分析并生成报告,简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

使用方法:awk '{pattern + action}' {filenames}

其中pattern 表示awk 在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。pattern就是要表示的正则表达式,用斜杠括起来。准备实例操作文件:netstat  -t >> netstat.txt

1.1 打印输出:print,格式化打印输出:printf

awk '{print$1, $4}' netstat.txt

awk '{printf "%-8s %-8s %-8s %-18s %-22s %-15s\n",$1,$2,$3,$4,$5,$6}' netstat.txt

1.2 过滤记录:awk '$3==0 && $6=="LISTEN"' netstat.txt

其中的“==”为比较运算符。其他比较运算符:!=,>, =, <=

awk '$3>0 {print $0}' netstat.txt

加入表头:内建变量NR

awk '$3==0 && $6=="LISTEN" || NR==1 ' netstat.txt

再加上格式化输出

awk '$3 ==0 && $6=="LISTEN" || NR==1 {printf "%-20s %-20s %s\n",$4,$5,$6}' netstat.txt

ps:awk的内建变量$0当前记录(这个变量中存放着整个行的内容)

$1~$n当前记录的第n个字段,字段间由FS分隔

FS输入字段分隔符默认是空格或Tab

NF当前记录中的字段个数,就是有多少列

NR已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。

FNR当前记录数,与NR不同的是,这个值会是各个文件自己的行号

RS输入的记录分隔符,默认为换行符

OFS输出字段分隔符,默认也是空格

ORS输出的记录分隔符,默认为换行符

FILENAME当前输入文件的名字

输出行号:awk '$3 ==0 && $6=="ESTABLISHED"|| NR==1 {printf "%02s %s %-20s %-20s %s\n",NR, FNR,$4,$5,$6}' netstat.txt

指定分隔符:awk 'BEGIN{FS=":"} {print $1,$3,$6}' /etc/passwd

或者awk -F: '{print $1,$3,$6}' /etc/passwd

以\t作为分隔符输出:awk -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd

1.3 字符串匹配:~表示匹配模式开始,正则表达式匹配。

awk '$6 ~ /TIME/ || NR ==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt

awk '$6 ~ /ESTABLISHED/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt

awk '/LISTEN/' netstat.txt

使用“/TIME|ESTABLISHED/” 来匹配TIME 或者ESTABLISHED :

awk '$6 ~ /FIN|TIME/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值