参考
常用文本处理命令
- diff
- grep
- sed
- awk
- find
- sort
- less
- vimdiff
两个文件
old.c
c
#include <stdio.h>
int main()
{
printf("hello\n");
return 0;
}
new.c
c
#include <stdio.h>
int main()
{
printf("llo\n");
printf("word \n");
return 0;
}
1. diff:比较文件差异
1.1 基本用法
bash
diff old.c new.c
diff 用于比较两个文件的差异。
常见输出:
text
5c5,6
< printf("hello\n");
---
> printf("llo\n");
> printf("word \n");
含义:
<表示旧文件内容>表示新文件内容
1.2 生成统一格式 diff
bash
diff -u old.c new.c
统一格式更适合作为 patch:
diff
--- old.c
+++ new.c
@@ -2,6 +2,7 @@
int main()
{
- printf("hello\n");
+ printf("llo\n");
+ printf("word \n");
return 0;
}
1.3 生成 patch 文件
bash
diff -u old.c new.c > fix.patch
应用:
bash
patch < fix.patch
2. Git diff:Git中的代码差异
注意:
diff 是独立命令,git diff 是 Git 子命令。
查看修改:
bash
git diff
输出:
diff
diff --git a/new.c b/new.c
index xxxxx..yyyyy 100644
--- a/new.c
+++ b/new.c
@@
- old
+ new
其中:
diff
diff --git a/file b/file
是 Git patch 格式,不是执行命令。
3. vimdiff:可视化比较文件
bash
vimdiff old.c new.c
适合:
- 代码比较
- 配置修改
- 查看差异
4. grep:搜索文本神器
基本搜索:
bash
grep hello old.c
显示行号:
bash
grep -n hello old.c
递归搜索:
bash
grep -rn "hello" .
忽略大小写:
bash
grep -i "hello" .
5. rg:grep 的现代替代品
ripgrep:
bash
rg "hello"
搜索源码:
bash
rg "axi_dma"
指定文件类型:
bash
rg "CONFIG_DMA" -t c
6. less:查看大文件
查看日志:
bash
less log.txt
内核日志:
bash
dmesg | less
常用快捷键:
按键 功能
q 退出
/xxx 搜索
n 下一个
g 开头
G 结尾
7. head / tail
查看前几行:
bash
head -n 50 file
查看最后内容:
bash
tail -n 100 file
实时查看:
bash
tail -f app.log
8. sed:文本替换工具
替换:
bash
sed 's/old/new/g' file
直接修改:
bash
sed -i 's/old/new/g' file
常用于:
- 内核配置
- PetaLinux 配置
- 脚本修改
9. awk:文本分析神器
按列输出:
bash
ps | awk '{print $1,$2}'
查看内存:
bash
cat /proc/meminfo | awk '/MemTotal/'
10. cut:按列切割
bash
cut -d: -f1 /etc/passwd
11. sort:排序
普通排序:
bash
sort file
数字排序:
bash
sort -n file
倒序:
bash
sort -nr file
12. uniq:去重统计
去重:
bash
sort file | uniq
统计:
bash
sort file | uniq -c
13. find:查找文件
查找:
bash
find . -name "*.c"
查找 patch:
bash
find . -name "*.patch"
查找大文件:
bash
find . -size +100M
14. xargs:批量执行
例如删除目标文件:
bash
find . -name "*.o" | xargs rm
15. wc:统计文本
统计行数:
bash
wc -l file
统计字符:
bash
wc -c file
16. Linux 内核 / PetaLinux 常用组合
搜索源码:
bash
grep -rn "probe" drivers/
搜索 DMA:
bash
rg "axi_dma"
查看设备树:
bash
grep -rn "axi" *.dts
查看日志:
bash
dmesg | grep dma
查看进程:
bash
ps aux | grep vtcplay
总结
Linux 文本工具核心组合:
- 搜索:grep / rg
- 比较:diff / vimdiff
- 修改:sed
- 分析:awk
- 过滤:cut / sort / uniq
- 查找:find
- 查看:less / head / tail