这篇文章讲一下常用的文本分析命令,相信我,是否有用.
linux常见目录介绍
命令初识
网络管理
- ping命令:检测网络连通性
- telnet命令:检测域名/IP和端口
- netstat命令:各种网络相关信息,如网络连接,路由表,接口状态
- ifconfig命令:查看网卡信息
进程与线程
- ps命令
- top命令
磁盘管理
- df命令:显示磁盘分区上可以使用的磁盘空间
- du命令:显示每个文件和目录的磁盘使用空间
awk命令
- linux中处理文本文件的一个应用程序
- awk 动作 文件名
- awk会把文件逐行读入,(空格,制表符)为默认分隔符,将每一行分成若干字段 ,用
$n
表示第n个字段 - awk强大在可以用其对数据分析并生成报告.
awk -F '' '{pattern+action}' filenames
awk的一般格式如下
awk -F ‘:’ ‘BEGIN{…}{}END{}’ filename
其中 -F指定分隔符,BEGIN中的内容开始执行一次,END中的内容结束执行一次,中间{}中的内容每行执行一次。
功能支持
- 支持自定义列分隔符
-F ‘分隔符’
awk -F ‘:’ demo.txt 以 : 为列分隔符进行输出 - 支持正则表达式匹配
- 支持自定义变量,数组 a[1], a[key]
- 支持内置变量
NF 分割后列的个数
NR 行号
$n $0为整个列,$n输出该行第n列
OFS 可以定义输出时列的分隔符
ORS 可以定义输出时行的分隔符
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
ARGC 命令行参数个数
ARGV 命令行参数排列
- 支持函数
- print
print $1 "," $2
- split
split(被分割变量,存入的变量,分割符)
- substr
- sub
- gsub
- print
- 支持流程控制语句,类C语言
- if, while , do/while, for/in, break, continue
- 支持将逻辑代码写入文件中去
- awk -f awk.sh demo.txt
- awk.sh 中排版需要严格排,跟golang语法很像
grep
- grep是按行匹配的文本工具,输出匹配行的内容
grep -[参] 内容 demo.txt
常用参数
- -o 仅显示匹配到的字符串
- -v 取反 , 打印出不匹配的相关内容
- -i 忽略大小写
- -n 显示匹配的行号
- -c 输出匹配的行数 相当于
wc -l
- -A1 after 显示匹配行以及它的后1行
- -B1 before 显示匹配行以及它的前1行
- -C1 context 显示匹配行以及它的前后各1行
- -e 或的关系,可以-e [1] -e [2]匹配包含1或者包含2的内容
- -w 以单词的形式匹配关键字(前后为符号或者空格为单词)
正则表达式简单入门
包括grep等其他编程时都需要用到正则表达式
(regex101.com)[在线测试正则表达式网址]
限定符
- ? 表示前一个字符出现0次或者1次 used?=>use和used
- *表示前一个字符出现0次或者n次
- +表示前一个字符出现1次以上
- a{6} {2,6} {2,} 分别表示a出现6次/2-6次/2次以上
- ()可以用来将多个字符扩起来来匹配后面的限定符
- |表示或 ,使用的时候记得加 ()
- []表示字符类,[abc]+ 表示只有abc构成的单词 [a-zA-Z]表示所有英文字母
- [^]表示非 ,[^0-9]代表不包含数字的
- 元字符 \d 数字字符 \w英文(单词)字符 \s空白符
- \D代表非数字字符 \W非英文字符 \S非空白符
- \b来表示边界的意思.
- .代表除换行符外的任意字符
- ^会匹配行首 ^a a开头 $会匹配行尾 a$ 以a结尾
- 当需要匹配.或者*等这些特殊字符时,可以使用\.和\*
正则表达式在范围匹配时(*+{}) 默认为贪婪匹配(匹配尽可能多的内容)
当我们只想要匹配满足条件的最小单元时,可以在后面加个?开启懒惰匹配
比如用<.+>来匹配html标签时,会匹配整段html代码,而我们只想匹配html标签 可以使用 <.+?>来达成这一效果