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
相关推荐
楚山之石5 小时前
【Medical Image Analysis】深度学习医学图像合成综述:伪CT、合成MRI与合成PET的架构、性能与临床边界
图像处理·人工智能·学习·mr·mri
Li_RuiQi6 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
SteveSenna9 小时前
aubo学习:realsense手眼标定
学习·机器人·视觉检测
Li_RuiQi11 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
Canmag 兴隆磁性11 小时前
回复磁导率 μ_R:永磁体在动态磁路中的关键参数
开发语言·学习·r语言·永磁材料·充磁·磁导率
lengxuenong11 小时前
区间覆盖问题 · 简明学习手册1
java·学习·算法
悟道书生12 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
Be for thing12 小时前
PyTorch自动求导Autograd详解|requires_grad、backward、grad、梯度清零
pytorch·学习·1024程序员节
小嘉丶学长12 小时前
Day08 · 字符串(二)
服务器·开发语言·python·学习·1024程序员节
poiu123465713 小时前
使用AI辅助学习与资料整理的个人体会
人工智能·学习