三剑客
三剑客 是指三个强大的命令。
grep
参数
-n:显示行号。-c:对结果行进行计数。-i:不区分大小写。-v:反向搜索,取反。-w:精准匹配。-o:只显示匹配的结果。-A1:同时打印搜索结果行的后一行。-B3:同时打印搜索结果行的前三行。-C2:同时打印搜索结果行的上下各两行。-E:扩展正则表达式。-P:使用perl正则
擅长过滤,或者说查找,按行来过滤。
示例:
/var/log/secure是记录用户登录系统的行为的。登录成功还是失败。系统都会记录这次登录的动作。grep 'Failed password' /var/log/secure如果我们想讲登录失败的ip地址找出来,可以再次过滤。比如某个
ip地址登录了多少次grep 'Failed password' /var/log/secure | grep _ip | wc -l可以借助正则表达式进行过滤,可以讲内容过滤得很干净。
grep 'Failed password' /var/log/secure|grep --color -Po "(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)"
sed
这个用的相对较少。主要用于去行和修改替换。
用法:
sed [-nri] [动作] 目标文件路径参数讲解:
-n:使用安静(silent)模式。在一般sed用法中,所有来自STDIN的数据一般都会被列出到终端。但是如果加上-n参数后,则只有经过sed特殊处理的那一行才会被列出来。-r:sed的动作支持的是延伸正则表示法的语法。(默认是基础正则表达式)-i: 直接修改读取的文件内容,而不是输出到终端。
动作说明:
[n1[,n2]] functionn1,n2一般表示为行号。[,n2]表示这个参数可选。
function:
a:指定行后面一行。d:删除。i:指定行前面插入一行。p:打印,一般和-n参数一起使用。s:替换 需要I忽略大小写,全局替换需要G。
awk
擅长取列。
比如a.txt的内容如下:
2 This is a test.
3 Do you like awk.
This's a test.
10 There are orange,apple,mongo取第一列
awk '{print $1}' a.txt取第三列
awk '{print $3}' a.txt取第二列和第三列
awk '{print $2,$3}' a.txt取每一行的最后一列
awk '{print $NF}' a.txt //NF是固定写法取第一列和最后一列
awk '{print $1,$NF}' a.txt反着写,将文件内容列重新排版
awk '{print $NF,$1}' a.txt
计算
假设4.txt文件内容如下:
# 水果,每斤多少钱,总共多少斤
orange 10 20
apple 20 30
mongo 50 10
banana 5 200计算每种水果的总价格
awk '{print $1,$2*$3}' 4.txt添加备注信息
awk '{print $1"总价为:",$2*$3"元"}' 4.txt