Linux文本操作相关命令行
-
-
- **一、文本查找与匹配**
-
- [`grep` - 文本搜索神器](#
grep- 文本搜索神器) - `findstr` (Windows 可用)
- [`grep` - 文本搜索神器](#
- **二、文本替换**
-
- [`sed` - 流编辑器](#
sed- 流编辑器) - [`tr` - 字符替换](#
tr- 字符替换)
- [`sed` - 流编辑器](#
- **三、文本提取与截取**
-
- [`cut` - 按列提取](#
cut- 按列提取) - [`awk` - 文本处理编程语言](#
awk- 文本处理编程语言)
- [`cut` - 按列提取](#
- **四、文本统计与分析**
-
- [`wc` - 字词统计](#
wc- 字词统计) - [`uniq` - 去重](#
uniq- 去重) - [`sort` - 排序](#
sort- 排序)
- [`wc` - 字词统计](#
- **五、文件操作与格式化**
-
- [`paste` - 合并行](#
paste- 合并行) - [`column` - 格式化输出](#
column- 格式化输出) - [`fold` - 折叠长行**](#
fold- 折叠长行**)
- [`paste` - 合并行](#
- **六、高级组合技巧**
-
- [**管道(|)与重定向(> >>)**](#管道(|)与重定向(> >>))
- **排除文件**
- **七、实用脚本示例**
-
- [**1. 删除重复行**](#1. 删除重复行)
- [**2. 提取 URL**](#2. 提取 URL)
- [**3. 统计日志访问量**](#3. 统计日志访问量)
- **八、调试技巧**
-
- [**1. 显示命令执行过程**](#1. 显示命令执行过程)
- [**2. 逐行执行脚本**](#2. 逐行执行脚本)
- **附:命令速查表**
-
一、文本查找与匹配
grep - 文本搜索神器
bash
# 查找文件中包含 "error" 的行
grep "error" filename.log
# 匹配正则表达式(例如邮箱)
grep -E "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b" emails.txt
# 忽略大小写
grep -i "pattern" file.txt
# 显示匹配行号
grep -n "pattern" file.txt
# 统计匹配次数
grep -c "pattern" file.txt
findstr (Windows 可用)
bash
# 查找包含 "success" 的行
findstr /C:"success" file.txt
二、文本替换
sed - 流编辑器
bash
# 将 "old" 替换为 "new"(仅替换第一处)
sed 's/old/new/' file.txt
# 全局替换
sed -i 's/old/new/g' file.txt # -i 直接修改原文件(Linux)
# 示例:删除注释行(以 # 开头)
sed '/^#/d' script.sh
tr - 字符替换
bash
# 将空格替换为逗号
tr ' ' ',' input.txt > output.csv
# 删除特定字符(如删除空行)
tr -d '\n' file.txt
三、文本提取与截取
cut - 按列提取
bash
# 提取第2-5列(字段分隔符默认为空格)
cut -d ' ' -f2-5 filename.log
# 提取以冒号分隔的第3部分(如 IP:端口)
cut -d ':' -f3 /etc/passwd
awk - 文本处理编程语言
bash
# 打印每行的第一个字段
awk '{print $1}' file.txt
# 统计单词数量
awk '{words++} END {print words}' file.txt
# 示例:提取邮箱地址
awk '/@/ {print $0}' emails.txt
四、文本统计与分析
wc - 字词统计
bash
# 统计行数、单词数、字符数
wc filename.txt
# 仅统计行数
wc -l filename.txt
# 仅统计单词数
wc -w filename.txt
uniq - 去重
bash
# 对排序后的文件去重
sort file.txt | uniq
# 统计重复次数
uniq -c sorted_file.txt
sort - 排序
bash
# 按字母顺序排序
sort file.txt
# 按数值排序(保留原始格式)
sort -n numbers.txt
# 逆序排序
sort -r log.txt
五、文件操作与格式化
paste - 合并行
bash
# 将两列文件合并(按列对齐)
paste file1.txt file2.txt > combined.txt
# 列居中对齐
paste -d '|' -s file.txt
column - 格式化输出
bash
# 将文本按指定宽度对齐
column -t -s ' ' input.txt
fold - 折叠长行**
bash
# 每行最多20个字符
fold -w 20 long_file.txt
六、高级组合技巧
管道(|)与重定向(> >>)
bash
# 查找错误并保存结果
grep "error" /var/log/syslog | grep -v "ignored" > errors.log
# 分步处理:压缩 -> 解压 -> 查找
tar -xzvf data.tar.gz | grep "keyword"
排除文件
bash
# 在目录中查找文件,排除子目录
find . -type f -not -path "./.git/*" -exec grep "pattern" {} \;
七、实用脚本示例
1. 删除重复行
bash
#!/bin/bash
sort input.txt | uniq -d > unique.txt
2. 提取 URL
bash
grep -oE "(http|https)://[^\" ]+" webpage.html
3. 统计日志访问量
bash
awk '{count[$1]++} END {for (host in count) print host, count[host]}' access.log
八、调试技巧
1. 显示命令执行过程
bash
# 跟踪 `sed` 的修改
sed -i.bak -e 's/foo/bar/' file.txt # 备份为 .bak
2. 逐行执行脚本
bash
bash -x script.sh # 显示每条执行的命令
附:命令速查表
| 命令 | 核心功能 | 典型场景 |
|---|---|---|
grep |
文本搜索 | 日志分析、模式匹配 |
sed |
行级文本替换 | 批量修改配置文件 |
awk |
文本处理编程 | 数据清洗、报表生成 |
cut |
按列提取数据 | CSV 文件处理 |
sort |
排序 | 数据预处理 |
uniq |
去重 | 清理重复数据 |
wc |
统计字词行数 | 文本长度分析 |
tr |
字符替换/删除 | 格式转换 |
paste |
合并行 | 数据合并 |
column |
格式化输出 | 制作表格 |
掌握这些命令后,结合管道(|)和重定向(>),可以高效完成绝大多数文本处理任务!