Erlo

基础指令:grep、wc、管道符( | )、head、tail、less、more、sort、uniq、Linux软件安装、重定向及追加

2025-03-01 20:29:01 发布   22 浏览  
页面报错/反馈
收藏 点赞

2.3过滤(三剑客之grep)与统计(wc)

  • 第一个里程碑:过滤出包含Failed password的行:grep
  • 第二个里程碑:命令的结果通过管道传递给其他命令:管道
  • 第三个里程碑:通过命令统计次数:wc -l
2.3.1过滤
  • 在文件中或命令的结果中,找出你要的或不要(排除)的内容
  • grep命令,Linux三剑客之一,擅长过滤
grep命令选项 说明
-i ignorecase过滤的时候不区分大小写
-n line number过滤出内容并显示行号
-o 只输出匹配的内容,显示匹配的过程
-v 取反
-r 递归过滤文件内容
-w 精准匹配
-c 统计字符串次数
  • 案例06:在/var/log/secure过滤出包含Failed password的行
grep 'Failed password' /var/log/secure
grep 'root' /var/log/secure
  • 案例07:接着上面的案例,过滤的时候不区分大小写
grep -i 'failed password' /var/log/secure
less/more命令查询日志,然后通过grep过滤
  • 案例08:在网卡配置文件中过滤出ipaddr的行并且显示行号
grep -ni 'ipaddr' /etc/sysconfig/network-scripts/ifcfg-ens33

注意:grep的作用是从文件中(而非文件夹)匹配出存在该关键字的那一行信息

2.3.2统计
  • 次数==>行数
  • wc统计文件的行数
wc命令的选项 说明
-l line只显示行数
-c 统计全文的字符数

案例09:统计文件一共多少行

[root@kylin-ren-class /]# wc -l /etc/sysconfig/network-scripts/ifcfg-ens33 
21 /etc/sysconfig/network-scripts/ifcfg-ens33
  • 温馨提示:wc一般会与其他命令搭配组合使用

2.4管道符号 |

  • 两边是命令
  • 左边使用管道的命令得出结果(输出),然后通过管道传递给右边的命令
  • 使用建议:不建议一上来就是用管道,推荐一步一步的实现

案例10:统计/var/log/secure文件中failure 或者 Failed password出现的次数

第1个里程碑:过滤
grep -i 'failed password' /var/log/secure

第2个里程碑 + 第3个里程碑:管道 + 统计次数
grep -i 'failed password' /var/log/secure | wc -l

第2个里程碑 + 第3个里程碑:管道 + 管道 + 统计次数
grep -E -i 'failed password | auth' /var/log/secure | wc -l
grep -E -i '(failed password | auth)' /var/log/secure | wc -l

案例11:统计/etc/目录下第一层一共有多少文件和目录

流程:
1.显示/etc/目录下的内容:ls
2.交给管道 + wc -l

ll /etc/ | wc -l
ls /etc/ | wc -l

案例12:在/etc/passwd文件中统计包含/bin/bash的行数

流程:
1.在/etc/passwd中过滤/bin/bash
2.管道 + wc -l

grep '/bin/bash' /etc/passwd
grep '/bin/bash' /etc/passwd | wc -l

2.5查看文本开头和结尾

  • head开头
  • tail结尾
2.5.1开头
head -n5
head -5
2.5.2结尾
  • 日常使用:
# 查看最后10行
tail /etc/passwd
tail /var/log/secure

#查看最后5行
tail -n5 /etc/passwd
tail -5 /etc/passwd
  • 查看文件末尾的实时更新(开2个窗口)
# -f 循环读取
tail -f /var/log/secure

2.5按页查看文件内容

  • less:less是一个更为强大的工具,它支持向前和向后翻页,并且可以进行搜索。less 还支持显示行号,这对于查看日志文件等非常有用
下一页:space 或 Ctrl + f
上一页:Ctrl + b
搜索:/ + 内容
G:最后一行
g:第一行             
100g:第100行
q:退出
less -N:查看行号
  • moremore 是一个简单的分页程序,它允许用户逐页查看文件内容,但不支持向后翻页。more 只能向前翻页

2.6排序sort

  • sort:文件内容排序
  • 语法结构:
sort file
#输出到屏幕上的内容使用管道交给sort处理
其他命令的输入结果 | sort
命令 说明
-r 逆序排列
-n 按照数字进行排序
-k 指定列进行排序
-t + '[分隔符]' 指定分隔符

案例13:对文件中的数字继续排序,默认按照字符第一列进行排序

[root@kylin-ren-class ren]# sort sort1.txt 
1143124
14124
154
26
341445
351
4

案例14:按照数字的正序进行排序

[root@kylin-ren-class ren]# sort -n sort1.txt 
4
5
26
53
154
351
526
5342

案例15:按照数字的逆序排序

[root@kylin-ren-class ren]# sort -rn sort1.txt 
625465347
9867898
4543154
4124265
1143124

案例16:按照文件中的第二列进行正序排序,默认以空格分隔

[root@kylin-ren-class ren]# sort -nk2 sort2.txt 
devlop 22
C# 23
jiqun 79
kebernets 87
mysql 100
java 273
C 283
C++ 293
python 384
nginx 1299
docker 7128

案例17:按照第二列的数字逆序排序

[root@kylin-ren-class ren]# sort -rnk2 sort2.txt 
docker 7128
nginx 1299
python 384
C++ 293
C 283
java 273
mysql 100
kebernets 87
jiqun 79
C# 23
devlop 22

案例18:取出Top10的同学以及成绩

[root@kylin-ren-class ren]# sort -rnk2 sort2.txt | head 
docker 7128
JS 2234
nginx 1299
python 384
GPW 324
HP 293
C++ 293
C 283
java 273
keybroad 245

案例19:取出文件中的成绩倒数1~3名

[root@kylin-ren-class ren]# sort -rnk2 sort2.txt | tail -3
jiqun 79
C# 23
devlop 22

案例20:按照第二个字符排序,域的使用

[root@kylin-ren-class ren]# sort -k1.2 sort2.txt #第一列第二个字符进行排序
C# 23
C 283
C++ 293
java 273
kebernets 87
devlop 22
keybroad 245
nginx 1299
jiqun 79

案例21:指定分隔符排序

[root@kylin-ren-class ren]# sort -t ':' -rnk3 sort3.txt 
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
cockpit-ws:x:993:990:User for cockpit-ws:/nonexisting:/sbin/nologin
chrony:x:992:989::/var/lib/chrony:/sbin/nologin
pesign:x:991:987:Group for the pesign signing daemon:/var/run/pesign:/sbin/nologin
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

案例22:将排序后的内容写入到源文件

[root@kylin-ren-class ren]# touch sort4.txt
[root@kylin-ren-class ren]# sort -t ':' -rnk3 sort3.txt > sort4.txt 
[root@kylin-ren-class ren]# cat sort4.txt 
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
cockpit-ws:x:993:990:User for cockpit-ws:/nonexisting:/sbin/nologin
chrony:x:992:989::/var/lib/chrony:/sbin/nologin
pesign:x:991:987:Group for the pesign signing daemon:/var/run/pesign:/sbin/nologin
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

如果是写入源文件是-o,慎用,在后面加一个-o即可

2.7uniq去重统计

  • 只能对挨着的进行去重
命令 说明
-c --count在每列旁边显示该行重复出现的次数,不能有空字符
-d --repeated仅显示重复出现的行列
-u --unique仅显示出一次的行列

案例23:统计文件中各个相同行出现的重复出现的次数

[root@kylin-ren-class ren]# uniq -c sort5.txt
      3 test 30
      4 Hello 95
      2 Linux 85

案例24:将文件中的字符进行排序并统计单词出现的次数

[root@kylin-ren-class ren]# cat sort5.txt | sort | uniq -c 
      4 Hello 95
      2 Linux 85
      3 test 30

案例25:按照字符出现的次数进行逆序排序

[root@kylin-ren-class ren]# cat sort5.txt | uniq -c | sort -rk1
      4 Hello 95
      3 test 30
      2 Linux 85

2.8软件安装三种方式

2.8.1 第一种:yum安装
特点:
1.安装简单方便
2.可以自动解决依赖问题
3.类似于直接通过软件商店进行意见傻瓜式安装
4.默认安装,不能选择位置,不能自定义安装

麒麟,红帽系统:

1.安装软件:
yum -y install [包名称]
yum- y install [包名称1] [包名称2] [包名称3]

2.卸载软件:
yum -y remove [包名称]

3.查看yum仓库中所有的软件:
yum list

4.清理yum缓存:
yum clean all

Ubuntu,Debian系统

1.软件安装:
apt -y install [包名称]

2.卸载软件
apt -y remove [包名称]

3.查看apt仓库中的所有软件:
apt list
2.8.2 第二种:rpm(麒麟,红帽系统)或者dpkg安装(Ubuntu,Debian)
特点:
1.必须先下载rpm包
2、rpm不支持自动解决依赖问题,需要手动安装,缺什么手动安装什么
3.支持无网络安装(企业需求)
4.不支持自定义安装,例如路径选择,功能选择
5.yum无法安装软件,或者yum安装的版本过低,第三方软件提供rpm包安装
rpm参数 说明
-i 安装软件
reinstall 覆盖安装
-v 显示安装过程
-h 显示安装进度
-qa 查看所有已经安装的软件
-qa + [包名字] 指定查看某个软件是否安装
-qc 查看软件的配置文件的位置
-ql 查看安装了哪些文件
-e 卸载软件
--downloaddir [路径] 下载文件到存放的路径
--downloadonly 只下载包,不安装
repolist 查看有哪些yum仓库
dpkg参数 说明
-i 安装软件
-l 列出当前系统中已经安装的所有包
-s 查询已安装的包的详细信息
-L 查询系统中已经安装的软件包所安装的位置
-r 卸载软件包,不是完全卸载,它的配置文件还存在
-p 全部卸载,但是还是不能解决软件包的依赖性问题
2.8.3 第三种编译安装

2.9 重定向(>)以及追加(>>)

1>  #标准正确输出重定向,先清空空写入,写时可以省略'1'直接写'>',只接收正确的执行结果
1>> #标准正确追加输出重定向,只接收正确的结果
2>  #标准错误输出重定向,先清空后写入,只要错误的结果
2>> #标准错误追加输出重定向,追加写入内容,只要错误的结果

案例26.将内容重定向到1.txt中

echo 任鹏宇 > 1.txt

案例27.如果结果错误会清空文件内容

[root@kylin-ren-class ren]# ech renpengyu > 1.txt 
-bash: ech:未找到命令
[root@kylin-ren-class ren]# cat 1.txt 
[root@kylin-ren-class ren]# 

案例28.清空文件内容

> 1.txt

案例29.追加重定向

[root@kylin-ren-class ren]# echo 计算机 >> 1.txt
[root@kylin-ren-class ren]# cat 1.txt 
计算机
[root@kylin-ren-class ren]# echo 运维 >> 1.txt
[root@kylin-ren-class ren]# cat 1.txt 
计算机
运维

案例30. 2>接收错误的结果

[root@kylin-ren-class ren]# ech 云计算 2> 1.txt
[root@kylin-ren-class ren]# cat 1.txt 
-bash: ech:未找到命令

案例31. 2>>追加错误的结果

[root@kylin-ren-class ren]# apt install telnetd -y 2>> 1.txt 
[root@kylin-ren-class ren]# cat 1.txt 
-bash: ech:未找到命令
-bash: apt:未找到命令

案例32. 保留命令的正确和错误的结果,正确的写入到OK.txt,错误的写入到error.txt

# 正确:
[root@kylin-ren-class ren]# echo 运维 >> OK.txt 2>> error.txt
[root@kylin-ren-class ren]# cat OK.txt 
运维
[root@kylin-ren-class ren]# cat error.txt 
[root@kylin-ren-class ren]#

# 错误:
[root@kylin-ren-class ren]# apt -y install wget >> OK.txt 2>> error.txt 
[root@kylin-ren-class ren]# cat OK.txt 
运维
[root@kylin-ren-class ren]# cat error.txt 
-bash: apt:未找到命令
[root@kylin-ren-class ren]#

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认