Linux 文本处理常用命令

参考

linux字节流相关工具.csdn

常用文本处理命令

  • 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
相关推荐
泛泛7辈2 小时前
在这个示例中,学习如何使用LiveBindings的TProtoTypeBindSource控件来实现对象间的主从式的数据绑定... ...
学习
fanged2 小时前
高通学习21--调试(TODO)
学习
超爱西西鸭3 小时前
鸿蒙大型项目高级模块化拆分:高内聚低耦合架构设计/HSP动态交付/接口契约/依赖倒置落地规范
学习·华为·harmonyos·鸿蒙
大模型丫丫3 小时前
Loop Engineering:从强化学习视角看 Agent 循环的本质
java·人工智能·学习
xiaoyuchidayuma3 小时前
【交流绕组及其磁动势-典型交流绕组结构(绘制绕组展开图)】
笔记·学习
其实防守也摸鱼4 小时前
HackBar 工具完全指南:信息探测、漏洞验证与安全测试实战
开发语言·人工智能·学习·安全·网络安全·安全威胁分析·安全性测试
优化Henry5 小时前
5G基站开关电源故障导致小区频闪退服案例
学习·5g·信息与通信·tdd
chenzhou__6 小时前
独立游戏开发日志 ①:从信号博弈到涂色对战——一次玩法重构始
笔记·后端·学习·unity·go·独立游戏
for_ever_love__6 小时前
iOS: 网络请求第三方库的使用: AFNetworking
网络·学习·ios·objective-c·cocoa·xcode