网站建设需要上税吗,龙岗网站建设流程,平面广告设计案例,网站seo策划方案设计目录 1、三剑客介绍2、三剑客之—grep1. 常用参数2. 常用示例1.过滤以#开头的行和空白行2.找出所有的mp3文件包含艺术家jayZ#xff0c;不包含remix3.计算匹配项的数目4.在匹配字符串周围打印出行5.匹配显示所有IP 3、三剑客之一sed1.常用参数2.常用示例1. 奇数行后增加2. 删除… 目录 1、三剑客介绍2、三剑客之—grep1. 常用参数2. 常用示例1.过滤以#开头的行和空白行2.找出所有的mp3文件包含艺术家jayZ不包含remix3.计算匹配项的数目4.在匹配字符串周围打印出行5.匹配显示所有IP 3、三剑客之一sed1.常用参数2.常用示例1. 奇数行后增加2. 删除注释的行3.插入4.替换 4、三剑客之一awk1.常用参数2.常用示例1.自定义输出内容2.显示文件的第n行3.通过管道符、双引号调用shell命令4.BEGINEND模式 1、三剑客介绍
Shell三剑客是指在Linux/Unix系统下使用最广泛的三个命令行工具grep、sed和awk。它们都是文本处理工具可以用于快速搜索、替换和处理大量文本数据。
命令特点使用场景grep擅长查找过滤快速查找过滤sed擅长取行和替换需要快速进行替换/修改文件内容awk擅长取列、统计计算文件取列、数据切片、对比/比较和统计
shell三剑客通常要与正则表达式一起使用 下面是一些常用的正则表达式元字符
.匹配任意单个字符除了换行符。
*匹配前面的字符0次或多次。
^匹配行的开头。
$匹配行的结尾。
[ ]匹配方括号中的任何一个字符。例如[abc]匹配a、b或c。
[^ ]匹配不在方括号中的任何字符。例如[^0-9]匹配任何非数字字符。
{n,m}最少匹配n次最多匹配m次
|或者。匹配|前后的任意一项。2、三剑客之—grep
1. 常用参数
-n显示行号
-i忽略大小写
-o精准匹配
-f从文件每一行获取匹配模式
-c统计匹配的行数
-w匹配 整个单词
-E使用扩展正则表达式相当于egrep
-F 相当于fgrep就是将pattern视为固定字符串。
-v反转查找显示不被 pattern 匹配到的行相当于[^] 反向匹配
-A后面可加数字为 after 的意思除了列出该行外后续的 n 行也列出来
-B后面可加数字为 before 的意思除了列出该行外前面的 n 行也列出来
-C后面可加数字为context 的意思除了列出该行外前后的n行也列出来。2. 常用示例
1.过滤以#开头的行和空白行
egrep -v ^#|^$ 文本文件 2.找出所有的mp3文件包含艺术家jayZ不包含remix
//要找出艺术家jayZ的所有mp3格式的音乐文件里面也不要有任何混合音轨-remix
find . -name .mp3 | grep -i JayZ | grep -vi remix3.计算匹配项的数目
#类似于将grep输出的结果用管道传送给计数器wc程序
cat /etc/passwd| grep -c nologin4.在匹配字符串周围打印出行
cat /etc/passwd| grep -A 2 mail #打印出前面匹配的n行
cat /etc/passwd| grep -B 2 mail #打印出后面匹配的n行
cat /etc/passwd| grep -C 2 mail #打印出两个方向都匹配的n行5.匹配显示所有IP
ip a|egrep -o [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}3、三剑客之一sed
1.常用参数 -n不打印模式空间-e执行脚本、表达式来处理-f执行动作从文件读取执行-i修改原文件-r使用扩展正则表达式。动作说明
a新增 a 的后面可以接字串而这些字串会在新的一行出现(目前的下一行)
c取代 c 的后面可以接字串这些字串可以取代 n1,n2 之间的行
d删除因为是删除啊所以 d 后面通常不接任何咚咚
i插入 i 的后面可以接字串而这些字串会在新的一行出现(目前的上一行)
p打印亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s取代通常这个 s 的动作可以搭配正规表示法例如 1,20s/old/new/g 。2.常用示例
1. 奇数行后增加
echo -e 1\n2\n3\n4\n5 | sed 1~2 a www
#1~2奇数1~2偶数2. 删除注释的行
echo -e #todo\ndef s\nputs b\nend | sed /^#/d3.插入
i 的后面可以接字串而这些字串会在新的一行出现(目前的上一行)
echo -e 1\n2\n3\n4\n5 | sed 1 i aaa每一行插入 ‘
sed -i s/^/\/g test.txt4.替换
替换每行第一个is 为was
sed s/is/was/1 pets.txt
替换每行全部is为was
sed s/is/was/g pets.txt
替换偶数行 is为was
sed 1~2! s/is/was/g pets.txt
覆盖原文件
sed -i 1~2! s/is/was/g pets.txt4、三剑客之一awk
1.常用参数
-F 指定分割字段符
-v 定义或修改一个awk内部的变量
-f 从脚本文件中读取awk命令内建变量
FS列分隔符。指定每行文本的字段分隔符默认为空格或制表位与“ -F ”作用相同OFS输出分隔符。指定输出字段间的分隔符。RS行分隔符。awk从文件读取资料时将根据RS的定义把资料切割为多条记录
awk一次仅读取一条记录以进行处理预设值为 \n (换行符)NF当前处理行的字段个数NR当前处理行的行号FNRawk当前读取的记录数其变量值小于等于NR
比如当读取第二个文件时FNR是从0开始重新计数而NR不会。NRFNR用于在读取两个或两个以上的文件时判断是不是在读取第一个文件$0当前处理行的整行内容$n当前处理行的第 n 个字段第 n 列FILENAME被处理的文件名
2.常用示例
1.自定义输出内容
awk必须外层单引号内层双引号内置变量$1、$2都不得添加双引号否则会识别文本尽量别添加引号awk -F: {print 第一列,$1,第二列,$2} /etc/passwd2.显示文件的第n行
#显示文件2-5行内容
awk NR2,NR5 passwd#显示文件2-5行且输出行号
awk NR2,NR5 {print NR,$0} passwd #显示文件的第一列倒数第二和倒数第三列
awk {print $1,$(NF-1)} test.txt
awk {print $1,$(NF-1),$(NF-2)} test.txt3.结果指定分隔符
#输出第1和第3个字段输出结果默认以 空格 分隔
awk -F : {print $1,$3 } passwd
awk -F : {print $1,$3 } passwd
awk -F : {print $1$3 } passwd3.通过管道符、双引号调用shell命令
1.统计行数
awk -F : /bash$/{print} passwd
root:x:0:0:root:/root:/bin/bash
y:x:1000:1000:y:/home/y:/bin/bash
lisi:x:1001:1001::/home/lisi:/bin/bash
#调用 wc -l 统计使用bash的行数
awk -F : /bash$/{print|wc -l} passwd
32.查看当前内存使用百分比
#查看当前内存使用百分比
free -m | awk /Mem:/{print int($3/($3$4)*100)%}
87%3.查看当前cpu空闲率
# -b -n 1 表示只需要1次输出结果
top -b -n 1 | grep Cpu
%Cpu(s): 2.9 us, 2.9 sy, 0.0 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
#输出cpu空闲率的字段
top -b -n 1 | grep Cpu | awk -F , {print $4}
96.9 id
#输出Cpu空闲率
top -b -n 1 | grep Cpu | awk -F , {print $4} | awk {print$1}
96.94.BEGINEND模式
BEGIN模式在处理指定文本之前需要先执行BEGIN模式中的指定的操作。
END模式在处理指定文本结束后需要执行END模式中的指定操作
#统计以 e 结尾的行
awk BEGIN{x0}; /e$/{x};END{print x}#统计以冒号分隔的文本段落数END{}语句块中往往会放入打印结果等语句
echo $PATH | awk BEGIN{RS:}{print NR,$0};END{print NR}过滤文本中重复行数
cat b.txt
aaa
bbb
ccc
aaa
aaa
aaa
bbb
bbb
ccc
#将文本的内容作为数组下标a[$1]表示出现相同的行就自加1
awk {a[$1]}END{for (i in a){print i,a[i]}} b.txt
aaa 4
ccc 2
bbb 3