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
相关推荐
那年窗外下的雪.15 分钟前
AIDC 学习日志|第 25 天|设备输出反推、MAC Flapping 与 EAD 撤销
前端·网络·git·学习·macos
个 人 练 习 生37 分钟前
数据结构:排序算法详解
c语言·数据结构·经验分享·学习·算法·排序算法
老当益壮梁奶奶42 分钟前
51单片机中断系统详解
c语言·单片机·嵌入式硬件·学习·51单片机
sunshine22 girl9 小时前
Java学习二 基本语法2, 算术运算符
java·学习
衡石科技12 小时前
Data_Agent记忆机制与经验复用衡石分析智能体会话记忆与长期学习技术解析
人工智能·科技·学习·算法·企业级bi
传奇开心果编程13 小时前
【Xilem基础语法学与练】第7课:Xilem与Masonry底层构建技术解析
学习·rust·前端框架
想要入门的程序猿13 小时前
回调函数学习
java·网络·学习
码上上班14 小时前
iptables学习; firewalld学习;ufw学习
学习
RisunJan14 小时前
丝连族谱 0452 — 功能拆解与使用手册
学习
老王爱玩车14 小时前
深入理解指针2
c语言·开发语言·学习