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
相关推荐
kkkkkkkkkk_Z3 小时前
学嵌入式和C语言编程数据结构|学习日记Day22:栈,二叉树,哈希存储
c语言·数据结构·学习
for_ever_love__6 小时前
python基础语法学习: 闭包
开发语言·python·学习·闭包
皮卡丘不断更7 小时前
从遥操作示范到可复现训练:LeRobot 0.6.1 的机器人学习工作流
人工智能·学习·机器人·开源·开发工具
IZero078 小时前
Elasticsearch 学习笔记筑基-文档操作篇
笔记·学习·elasticsearch
小白说大模型9 小时前
AI驱动的个性化学习路径:知识图谱与知识点关联的存储与推理
大数据·人工智能·学习·mysql·机器学习·prompt·知识图谱
吃好睡好便好9 小时前
三伏天结束了
学习·生活·毕淑敏·心理游戏
2501_9318197010 小时前
方言标注标准化模板迭代优化诉求 泸州话标注公司学习信实翻译模板迭代方法论
学习
tju新生代魔迷11 小时前
Python学习日记5
学习
小唔w11 小时前
武汉外籍人员子女学校择校观察:枫叶教育信息整理
学习
for_ever_love__11 小时前
python基础语法学习: 装饰器
python·学习·装饰器·装饰器模式