Linux 常用命令 grep & tree 随笔记录
目录
1. grep
grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具
1.1 查询某指定内容行号
可以使用 grep 命令结合 -n 选项。以下是示例命令:
grep -n "测试用例" file.txt
请将 file.txt 替换为您要搜索的实际文件名。
[root@server-247 proxy_test]# grep -n "测试日期" riskcop_result.log
223:测试日期:2023-08-02 16:03:32.162962
236:测试日期:2023-08-02 16:18:07.986130
249:测试日期:2023-08-02 16:19:42.084216
262:测试日期:2023-08-02 16:20:21.441121
275:测试日期:2023-08-02 16:22:05.840816
[root@server-247 proxy_test]#
1.2. 获取文本所有行数
# 获取文本文件的总行数,可以使用 wc 命令的 -l 选项。以下是示例命令:
# wc -l file.txt
[root@server-247 proxy_test]# wc -l riskcop_result.log
286 riskcop_result.log
[root@server-247 proxy_test]#
# 请将 file.txt 替换为您要计算行数的实际文件名。
# 该命令将输出文件中的总行数,例如:
286 riskcop_result.log
# 上面的输出表示文件 file.txt 共有 100 行。
除了使用 wc 命令,还可以使用其他方法来计算文本文件的总行数,例如使用 cat 命令和管道(|)结合 wc 命令:
cat file.txt | wc -l
这将将文件的内容通过管道传递给 wc -l 命令,以计算总行数。结果与上述方法相同。
1.3. 查询指定内容最新的行号
查询 grep -n "测试日期" riskcop_result.log 命令的输出结果中的最后一条结果的行数,可以使用 tail 命令结合 -n 选项。以下是示例命令:
# grep -n "测试日期" riskcop_result.log | tail -n 1
# 该命令会先使用 grep 命令查询包含 "测试日期" 的行,并在输出结果中显示行号。然后,使用 tail -n 1 命令将结果中的最后一行提取出来。
执行上述命令后,将会显示最后一条查询结果的行号。在您提供的输出结果中,最后一条结果的行号是 275
1.4. 获取指定行数至结尾所有内容
要查询从 grep -n "测试日期" riskcop_result.log | tail -n 1 命令的输出结果的最后一行开始的所有内容,可以使用 awk 命令。以下是示例命令:
grep -n "测试日期" riskcop_result.log | tail -n 1 | awk -F ':' '{print $1}' | xargs -I {} awk 'NR>= {}' riskcop_result.log
# 注释:
该命令的步骤如下:
grep -n "测试日期" riskcop_result.log:查询包含 "测试日期" 的行,并显示行号。
tail -n 1:提取结果中的最后一行。
awk -F ':' '{print $1}':使用冒号作为分隔符,提取行号。
xargs -I {} awk 'NR>= {}' riskcop_result.log:使用提取的行号作为参数,使用 awk 命令查询从该行号开始的所有内容。
执行上述命令后,将会显示从最后一条查询结果的行开始到文件结束的所有内容。请注意,这将包括最后一条查询结果的行。
1.5 查询指定内容,并统计总个数
# grep -o '<要求查询内容>' <带查询文件> | wc -l
root@localhost:# grep -o 'low_bits:2,' 2024_03_22_10_36_06_all.log |wc -l
171
root@localhost:#
root@localhost:#grep -o 'low_bits:3,' 2024_03_22_10_36_06_all.log |wc -l
170
root@localhost:#
root@localhost:# grep -o 'low_bits:0,' 2024_03_22_10_36_06_all.log |wc -l
133
root@localhost:#
root@localhost:# grep -o 'low_bits:1,' 2024_03_22_10_36_06_all.log |wc -l
38
root@localhost:#
2. tree
tree: 以树状格式列出目录的内容, 查看文件系统的结构
# tree [OPTIONS] [directory]
2.1 安装tree,查看目录结构
RedHat/CentOs :
# sudo yum install tree
2.2 tree 不加参数
# 指定目录
# tree <目录名>
[root@247 Docker-Compose-Master]# pwd
/home/magx/Docker-Compose-Master
[root@247 Docker-Compose-Master]#
[root@247 Docker-Compose-Master]#
[root@247 Docker-Compose-Master]# ll
total 20
-rw-r--r--. 1 root root 3468 Jan 3 14:22 docker-compose-grafana-prometheus.yml
-rw-r--r--. 1 root root 144 Dec 7 09:29 docker-compose-grafana-promtail-vetcor.yml
-rw-r--r--. 1 root root 4452 Jan 3 17:52 docker-compose-granfana-prometheus-zookeepr-kafka.yml
-rw-r--r--. 1 root root 144 Dec 4 15:22 docker-compose.yml
drwxr-xr-x. 3 root root 91 Dec 26 11:12 grafana_loki_vector
drwxr-xr-x. 4 root root 105 Jan 3 14:20 grafana_prometheus_JVM
drwxr-xr-x. 2 root root 109 Jan 3 14:24 jmx_exporter
drwxr-xr-x. 3 root root 164 Jan 3 09:59 kafka
drwxr-xr-x. 6 root root 85 Jan 3 14:24 prometheus
drwxr-xr-x. 2 root root 10 Dec 4 16:52 zookeeper
[root@247 Docker-Compose-Master]#
[root@247 Docker-Compose-Master]# tree ./ # 查询当前目录结构
./
├── docker-compose-grafana-prometheus.yml
├── docker-compose-grafana-promtail-vetcor.yml
├── docker-compose-granfana-prometheus-zookeepr-kafka.yml
├── docker-compose.yml
├── grafana_loki_vector
│ ├── docker-compose-grafana-loki-vector.yml
│ └── grafana_loki_vector
│ ├── grafana
│ │ ├── data
│ │ │ ├── alerting
│ │ │ │ └── 1
│ │ │ │ └── __default__.tmpl
│ │ │ ├── csv
│ │ │ ├── grafana.db
│ │ │ ├── plugins
│ │ │ └── png
│ │ └── log
│ ├── loki
│ │ └── loki-config.yaml
│ ├── vector
│ │ └── vector.toml
│ └── wal
│ ├── 00006568
│ └── checkpoint.006567
│ └── 00000000
2.3 tree -L : 指定层数
# 限制目录显示层级
# tree -L <目录深度等级>
[root@247 Docker-Compose-Master]#
[root@247 Docker-Compose-Master]# tree -L 3 ./
./
├── docker-compose-grafana-prometheus.yml
├── docker-compose-grafana-promtail-vetcor.yml
├── docker-compose-granfana-prometheus-zookeepr-kafka.yml
├── docker-compose.yml
├── grafana_loki_vector
│ ├── docker-compose-grafana-loki-vector.yml
│ └── grafana_loki_vector
│ ├── grafana
│ ├── loki
│ ├── vector
│ └── wal
2.4 其他参数
tree 常见的命令如下:
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 根据ls -F,为目录添加一个'/',为套接字文件添加一个'=',为可执行文件添加一个' *',为FIFO添加一个' |'
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I 不显示符合范本样式的文件或目录名称。
-l 跟随目录的符号链接,就像它们是目录一样。避免了导致递归循环的链接
-n 不在文件和目录清单加上色彩。
-N 按原样打印不可打印的字符。
-p 列出权限标示。
-P 只显示符合范本样式的文件或目录名称。
-q 将文件名中的不可打印字符作为问号打印。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
到此简单介绍 结束