Chao's Blog Chao's Blog
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)

~chao

永远菜鸟,不断努力~
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)
  • linux命令

    • linux防火墙放开特定端口
    • linux 三剑客
    • linux对日志进行统计和拆分
  • linux安装软件

  • linux脚本

  • Linux
  • linux命令
~chao
2022-11-14

linux 三剑客

Linux中的三剑客是指awk,sed,grep。

  • awk擅长取列
  • sed擅长取行和替换
  • grep擅长查找功能

1、awk

#查找nginx的进程id
ps aux|grep nginx|grep -v grep|awk '{print $2}';

#使用":"分割,打印文件第1列
awk -F ':' '{print $1}' /etc/passwd;

#使用":"分割,打印文件第1,2,3列
awk -F ':' '{print $1, $2, $3}' /etc/passwd;

#格式化输出
awk -F ':' '{ printf("%5s  %5s  %5s\n", $1, $2, $3) }' /etc/passwd;

#使用多个分隔符,先使用"1"分割,然后对分割结果再使用":"分割,打印文件第1,2,3列
awk -F '[1 :]' '{print $1, $2, $3}' /etc/passwd;

#使用-v设置变量,1+a:在第1列后面添加a列
awk -F ':' -va='666' '{print $1, $1+a}' /etc/passwd;

#使用-v设置变量,1b:在第1列后面拼接b值作为新的1列
awk -F ':' -va='666' -vb='abc' '{print $1, $1+a, $1b}' /etc/passwd;

#根据关键字匹配某一行
awk '/root/' /etc/passwd;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

2、sed
sed主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

#替换:将文本里所有aaa替换为bbb。s:search 查找并替换; g:global 全部替换; -i:implace; * 通配符。
sed -i "s/aaa/bbb/g" /tmp///demo.txt;

#末尾追加内容。$获取文件的末尾, a追加在文件末尾。
sed -i '$a\末尾追加内容' /tmp/demo.txt;

#在指定行(关键字)前面或后面添加内容。前面追加i; 后面追加a。
sed -i '/aaa/ i\指定行(关键字)前加' /tmp/demo.txt;
sed -i '/aaa/ a\指定行(关键字)后加' /tmp/demo.txt;

#在指定行(关键字)前面或后面添加内容。前面追加i; 后面追加a。
sed -i '/aaa/i 指定行(关键字)前加' /tmp/demo.txt;
sed -i '/aaa/a 指定行(关键字)后加' /tmp/demo.txt;

#在指定行(行号)前面或者后面添加内容。前面追加i; 后面追加a。
sed -i '10 i 指定行(行号)前加' /tmp/demo.txt;
sed -i '10 a 指定行(行号)后加' /tmp/demo.txt;

#/ 需用 \ 来转义
sed -i "s/<core>[0-9]</core>.*$/<core>2</core>/g" /tmp/demo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

3、grep

#在单个文件中查找
grep root /etc/passwd;

#在多个文件中查找
grep root /etc/passwd /etc/shadow /etc/gshadow;

#使用 -v 参数排除指定模式
grep -v root /etc/passwd;

#使用 -c 参数计算模式匹配到的数量
grep -c root /etc/passwd;

#使用 -n 参数在文件中查找指定模式并显示匹配行的行号
grep -n root /etc/passwd;

#使用 ^$ 查找文件中所有空行
grep ^$ /etc/passwd;

#使用 -e|-E 参数查找多个模式
grep -e '6901' -e 'root' /etc/passwd;
grep -E '6901|root' /etc/passwd;

#使用 -r 参数递归地查找指定模式
grep -r root /etc/;

#使用 ^ 符号输出所有以指定模式开头的行
grep ^root /etc/passwd;

#使用 $ 符号输出所有以指定模式结尾的行
grep bash$ /etc/passwd;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
编辑 (opens new window)
上次更新: 2024/01/26, 05:03:22
linux防火墙放开特定端口
linux对日志进行统计和拆分

← linux防火墙放开特定端口 linux对日志进行统计和拆分→

最近更新
01
python使用生成器读取大文件-500g
09-24
02
Windows环境下 Docker Desktop 安装 Nginx
04-10
03
使用nginx部署多个前端项目(三种方式)
04-10
更多文章>
Theme by Vdoing | Copyright © 2022-2024 chaos | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式