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

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

相关推荐
跃渊Yuey9 分钟前
【Linux】线程同步与互斥
linux·笔记
杨江10 分钟前
seafile docker安装说明
运维
舰长11512 分钟前
linux 实现文件共享的实现方式比较
linux·服务器·网络
好好沉淀17 分钟前
Docker开发笔记(详解)
运维·docker·容器
zmjjdank1ng26 分钟前
Linux 输出重定向
linux·运维
路由侠内网穿透.28 分钟前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
树℡独31 分钟前
ns-3仿真之应用层(三)
运维·服务器·ns3
VekiSon1 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq1 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
Ankie Wan1 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc