1 sed
Linux 系统上非常强大和常用的文本处理工具,用于对文本的转换、替换等操作
使用
sed 配合有一下这些参数选项,太多了不用记忆,只需要知道sed主要是对文本行处理的工具,通过sed命令对指定行文本操作即可,具体命令可以AI搜
通用参数
参数名称 | 解释 |
---|---|
-n | 取消sed的默认输出,常于sed内置p名称一起使用 |
-i | 将结果写入文件,不用-i |
-e | 多次编辑,不用采用管道符 |
-r | 支持正则 |
内置参数
参数名称 | 解释 |
---|---|
a | append,文本追加 |
d | delete,删除匹配行 |
i | insert,指定行前插入 |
p | print,打印 |
s/正则/替换内容/g | 匹配后替换 |
常用sed如下
sed '/delete/p' a.txt -n
sed '/catch/d' a.txt -i
sed 's/FileUtil/my/g' a.txt -i
多个替换
sed -e 's/my/me/g' -e 's/delete/remove/g' a.txt -i
sed '4,$p' a.txt -n
sed '3a imasusy' a.txt -i
2 awk
是另一个的文本处理工具,主要对于文本列操作。能够执行多种操作,如打印、过滤、计算、格式化等。可以理解为awk是一个简单编程语言,类似于shell
使用
awk 配合有一下这些参数选项,不用记忆,具体命令可以在使用时去AI搜
- -F:指定字段分隔符。
- -f:从文件中读取 awk 的脚本。
- -v var=value:定义 awk 的变量。
预变量
- $0:整行内容。
- $1, $2, …:第 1、第 2 列等字段。
- NF:当前行的字段数。
- NR:当前行的行号。
- FS:字段分隔符。
- RS:记录分隔符。
- 打印操作
awk '{print $1, $3}' file
打印每行的第 1 和第 3 个字段。
- 条件过滤
awk '$2 > 10 {print $1, $2}' file
只打印第 2 列大于 10 的行的第 1 和第 2 列。
- 计算
awk '{sum += $1} END {print sum}' file
计算第 1 列的总和并打印。
- 模式匹配
awk '/pattern/ {print $0}' file
打印包含匹配模式 pattern 的行。
- 格式化输出
awk '{printf "%-10s %s\n", $1, $2}' file
格式化输出第 1 和第 2 个字段。
- 循环处理
awk '{for (i=1; i<=NF; i++) print $i}' file
每行逐个打印字段。
3 grep
是在 Linux 系统中非常常用的文本搜索工具,用于从文件或标准输入中查找匹配指定模式的行
使用
常用选项
- -i:忽略大小写进行匹配。
- -v:反向查找,只输出不匹配 PATTERN 的行。
- -r:递归搜索子目录中的文件。
- -n:显示匹配行的行号。
- -E:使用扩展的正则表达式语法 (支持 +, ?, {} 等)。
- -o:只输出匹配的部分。
假设有一个名为 example.txt 的文件:
$ cat example.txt
Hello, World!
This is a test file.
通过 grep 查找包含 Hello 的行:
$ grep "Hello" example.txt
Hello, World!
查找不包含Hello的行
$ grep -v "Hello" example.txt
This is a test file.
查找时忽略大小写
$ grep -i "HELLO" example.txt
Hello, World!
使用正则表达式查找以大写字母开头的行:
$ grep "^[A-Z]" example.txt
Hello, World!
结合管道使用
grep 命令通常与其他命令结合使用,例如:
$ ps aux | grep "chrome"
上述命令将列出所有包含 chrome 关键字的进程
4 总结
- sed和grep主要对于行操作,awk主要对于列操作
- 三个命令配合的选项参数太多,其中grep记住 -v和-i即可,其他命令使用时AI搜即可,但要清楚每个命令的作用