【Linux知识】Linux文本操作相关命令行

Linux文本操作相关命令行

一、文本查找与匹配

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 格式化输出 制作表格

掌握这些命令后,结合管道(|)和重定向(>),可以高效完成绝大多数文本处理任务!

相关推荐
上学的小垃圾28 分钟前
基于docker安装MySQL(openEuler系统)
linux·mysql·docker·容器
cui_ruicheng1 小时前
LangChain 应用开发(十四):Agent 上下文与记忆机制
服务器·人工智能·python·langchain
一直C2 小时前
Linux网络编程|HTTP协议详解(报文、请求方法、状态码)
linux·http·wireshark·vim·visual studio
爱喝水的鱼丶2 小时前
SAP-ABAP:ABAP 用户出口开发规范与避坑指南:10 类典型错误与运维方案
运维·性能优化·sap·abap·增强·经验交流·出口
博、、3 小时前
从零构建智慧场馆解决方案:架构设计与开发实践
大数据·运维
敢敢是只喵i3 小时前
给现有业务系统接 AI 助手,入口怎么选?网页聊天、自动化任务与本地 Agent 对比
运维·人工智能·ai·开源·自动化·安全架构
章老师说4 小时前
BFE v1.8.6 正式发布:AI 网关计费精细化、Claude 协议与会话亲和性升级
运维·人工智能·ai·负载均衡·ai-native
Brilliantwxx4 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
ai小陈4 小时前
FramePack图生视频云端部署实战:从单图输入到视频输出的完整流程
服务器·人工智能·安全·ai·音视频·gpu算力
欧米欧5 小时前
Linux基础指令上
linux·运维·服务器