0 随堂测验
find /etc/ -name 'ifcfg*'
find /etc/yum.repos.d/ -name '*.repo' -exec cp /tmp \;
find /etc/ -type d | xargs -I {} cp -r {} /tmp/
tar -zcvf /tmp/etc.tar.gz $(find /etc/ -type f | xargs)
-a
-o
tar -xf /tmp/etc.tar.gz -C /mnt/
1 Linux三剑客之grep
grep命令一般用来筛选我们需要的数据,过滤内容
grep [参数] [过滤规则] [路径]
标准输出 | grep [参数] [过滤规则]
参数:
-n:显示匹配行及行号 ***
-o:只输出匹配的内容
-q:静默输出 不输出匹配结果
-i:忽略大小写
-c:显示匹配到的行数
-v:反向查找
-w:匹配某个词
-E:使用扩展正则
-R:递归过滤
-R, -r, --recursive 递归过滤
-l:只输出匹配到的文件名路径
通常-rl一起用,grep -rl 'root' /etc
-L:只输出未匹配到的文件名路径
-s:不显示 不存在或无匹配文本的错误信息
-e:指定匹配规则,可指定多次,实现 or 的效果,
可通过在首个 -e 前指定 -E, -G, -F切换正则匹配模式
-f: 指定一个文件,可指定多次,里面包含了匹配的规则,一行一个规则
扩展参数:
-A:显示匹配到的数据及后n行
-B:显示匹配到的数据及前n行
-C:显示匹配到的数据及前后n行
$?:代表上一次命令执行是否成功(0代表成功,非0代表失败)
wc-l:打印显示有多少行(统计行)
grep -n '/bin/bash' /etc/passwd
grep 案例
注:去掉grep color 进程的干扰 将 首字母加[] eg:[n]ginx
ps aux | grep "[n]ginx"
ps aux | grep "nginx" | grep -v grep
grep -n "root" /etc/passwd
grep -o "root" /etc/passwd
grep -i "Root" /etc/passwd
grep -n -A 2 "mail" /etc/passwd
grep -n -B 2 "mail" /etc/passwd
grep -n -C 2 "mail" /etc/passwd
grep -c "root" /etc/passwd
grep -v "root" /etc/passwd
cat 1.txt
befggfnb
vtiandsgrt
tiandfbx
tiantian
hetiantian
tiantianhe
2353475
546554
tian
grep -w "tian" 1.txt
tian
grep "yang" 1.txt
或者
grep -E "(tian)+" 1.txt
vtiandsgrt
tiandfbx
tiantian
hetiantian
tiantianhe
tian
grep -R "root" /etc
grep -Rl "root" /etc/
grep -q "root" /etc/passwd
echo $?
grep -R -l "root" /etc | wc -l
grep -n "/bin/bash" /etc/passwd
ip a | grep -o -E "([0-9]{1,3}\.){3}([0-9]){1,3}"
127.0.0.1
192.168.15.110
192.168.15.255
172.22.0.110
172.22.15.255
2 正则表达式
1.普通正则表达式
* 匹配前一个字符(连续出现)0或者1次以上
. 点号,表示匹配任意一个且只有一个字符
^ 尖角号,用法为^oldboy.表示匹配以oldboy单词开头的行
$ 美元符,用法为oldboy$,表示匹配以oldboy单词结尾的行
\ 转义字符,让有特殊含义的字符脱掉马甲,现出原形,如\.只表示小数点
[] 或者(其中包含的所有的字符的或者)
[^] 取反
[A-Z] 匹配[]内任意一个字符,A-Z中的任意一个
[a-z] 匹配[]内任意一个字符,a-z中的任意一个
[0-9] 匹配[]内任意一个字符,0-9中的任意一个
[^abc] 匹配不包含^后的任意字符,这里的^表示对[abc]取反
.* 组合符,匹配所有的内容
^.* 组合符,匹配以任意多个字符开头的内容
^$ 组合符,表示空行,逻辑解释就是以^结尾的行,或以$开头的行
.*$ 组合符,以任意多个字符结尾的内容
普通正则案例
grep "22.*" 1.txt
grep "222*" 1.txt
grep "3$" 1.txt
grep "eth." 2.txt
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfgg-eth0
grep "^1" 1.txt
1223344
1234
1222444
122222
12222446
grep "^[^#]" /etc/nginx/nginx.conf
grep '^[^# ]' /etc/nginx/nginx.conf
grep "2.*" 1.txt
grep ":[0-9][0-9][0-9][0-9]" /etc/passwd
test04:x:1001:1001::/home/test04:/bin/bash
test:x:1002:1002::/home/test:/bin/bash
test01:x:1003:1003::/home/test01:/bin/bash
egrep ":[0-9]{4}" /etc/passwd
2.拓展正则表达式
+ 匹配前一个字符1次或1次以上
? 匹配前一个字符0次或1次
| 表示或者,即同时过滤多个字符串(竖线两边的字符的或者)
() 分组,组成一个整体,另外()的内容可以被后面的\n引用,n为数字,代表引用第几个括号的内容
\n n代表的是前面第几个分组 引用前面()分组里的模式,
{m,n} 匹配前一个字符最少m次,最多n次
{m} 匹配前一个字符m次
{m,} 匹配前一个字符最少m次
{,n} 匹配前一个字符最多n次
拓展正则案例
egrep "2+" 1.txt
egrep "22*" 1.txt
egrep "2{1,}" 1.txt
egrep "2{3}" 1.txt
egrep "22|33" 1.txt
grep -E "(1234)\1" 1.txt
grep -E "(1234){2}" 1.txt
grep "12341234" 1.txt
egrep "(1234)(1234)" 1.txt
grep "1234abcd1234abcd" 1.txt
grep -E "(1234)(abcd)\1\2" 1.txt
ip a |grep -o -E "([0-9]{1,3}\.){3}[0-9]{1,3}"
127.0.0.1
192.168.15.110
192.168.15.255
172.22.0.110
172.22.15.255
echo "15516134567" | grep -E "(155|187|136|166|177|138|137|188)[0-9]{8}$"
15516134567
egrep '^1[0-9]{10}$' 1.txt
echo "12345@qq.com" | grep -E "[0-9a-zA-Z]+@[0-9a-z]+(\.com|\.com\.cn|\.edu|\.edu\.cn|\.top)"
12345@qq.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律