Linux command -grep & tree 介绍

Linux 常用命令 grep & tree 随笔记录

目录

 1. grep

1.1 查询某指定内容行号

1.2. 获取文本所有行数

1.3.  查询指定内容最新的行号

1.4. 获取指定行数至结尾所有内容

1.5 查询指定内容,并统计总个数 

2. tree

2.1 安装tree,查看目录结构

2.2 tree 不加参数

2.3  tree -L : 指定层数

2.4  其他参数


 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 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。

 到此简单介绍 结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值