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