Linux 提供了多种查看和处理文件内容的命令,下面我将介绍最常用的几个命令及其使用方法。
基本语法:
cat [选项] 文件名
常用选项:
- -n
:显示行号
- -b
:显示非空行的行号
- -s
:压缩连续的空行为一行
示例:
cat file.txt # 显示文件内容
cat -n file.txt # 带行号显示文件内容
cat file1.txt file2.txt # 合并显示多个文件
基本语法:
less [选项] 文件名
常用操作: - 空格:向下翻一页 - b:向上翻一页 - /pattern:搜索 - q:退出 - g:跳到文件开头 - G:跳到文件末尾
示例:
less large_file.log
基本语法:
more [选项] 文件名
常用操作: - 空格:向下翻页 - Enter:向下滚动一行 - q:退出
示例:
more /var/log/syslog
基本语法:
head [选项] 文件名
常用选项:
- -n NUM
:显示前NUM行(默认10行)
- -c NUM
:显示前NUM字节
示例:
head file.log # 显示前10行
head -n 20 file.log # 显示前20行
head -c 100 file.log # 显示前100字节
基本语法:
tail [选项] 文件名
常用选项:
- -n NUM
:显示最后NUM行(默认10行)
- -c NUM
:显示最后NUM字节
- -f
:实时跟踪文件变化(常用于查看日志)
示例:
tail file.log # 显示最后10行
tail -n 20 file.log # 显示最后20行
tail -f /var/log/syslog # 实时监控日志文件
基本语法:
grep [选项] 模式 文件名
常用选项:
- -i
:忽略大小写
- -v
:反向匹配(显示不匹配的行)
- -r
:递归搜索目录
- -n
:显示匹配行的行号
- -c
:统计匹配行数
- -A NUM
:显示匹配行及其后NUM行
- -B NUM
:显示匹配行及其前NUM行
- -C NUM
:显示匹配行及其前后NUM行
示例:
grep "error" file.log # 搜索包含"error"的行
grep -i "warning" file.log # 忽略大小写搜索"warning"
grep -r "function" /path/to/dir # 递归搜索目录中的文件
grep -n "exception" file.log # 显示匹配行及其行号
基本语法:
sed [选项] '命令' 文件名
常用操作:
- 替换:s/原字符串/新字符串/[g]
(g表示全局替换)
- 删除行:d
- 打印行:p
(通常与-n
选项一起使用)
示例:
sed 's/foo/bar/' file.txt # 将每行第一个foo替换为bar
sed 's/foo/bar/g' file.txt # 全局替换foo为bar
sed -i 's/foo/bar/g' file.txt # 直接修改文件内容
sed '/pattern/d' file.txt # 删除包含pattern的行
sed -n '5,10p' file.txt # 打印5-10行
基本语法:
awk '模式 {动作}' 文件名
常用变量:
- NR
:当前行号
- NF
:当前行的字段数
- $0
:整行内容
- $1, $2,...
:第1,2,...个字段
示例:
awk '{print $1}' file.txt # 打印每行第一个字段
awk '/error/ {print $0}' file.log # 打印包含error的行
awk -F: '{print $1}' /etc/passwd # 以:为分隔符打印第一列
awk 'NR==5,NR==10 {print}' file.txt # 打印5-10行
awk '{sum+=$1} END {print sum}' numbers.txt # 计算第一列总和
基本语法:
diff [选项] 文件1 文件2
常用选项:
- -u
:统一格式输出
- -c
:上下文格式输出
- -r
:递归比较目录
示例:
diff file1.txt file2.txt
diff -u old_file new_file > changes.patch # 生成补丁文件
基本语法:
wc [选项] 文件名
常用选项:
- -l
:统计行数
- -w
:统计单词数
- -c
:统计字节数
- -m
:统计字符数
示例:
wc file.txt # 显示行数、单词数、字节数
wc -l file.txt # 只统计行数
wc -w *.txt # 统计所有txt文件的单词数
这些命令可以组合使用,通过管道(|
)连接,实现更强大的功能。例如:
cat file.log | grep "error" | wc -l # 统计文件中包含"error"的行数
ps aux | grep "nginx" # 查找nginx进程
掌握这些命令将大大提高你在Linux环境下处理文本文件的效率。