1. 使用`head`命令输出前N行:
bash
head -n 5 filename.txt # 输出文件前5行
结合管道处理其他命令输出:
bash
ps aux | head -n 10
2. 使用`tail`命令输出后N行:
bash
tail -n 3 filename.txt # 输出文件末尾3行
实时监控日志新增内容(-f参数):
bash
tail -f /var/log/syslog
3. 使用`sed`提取指定行范围:
bash
sed -n '10,15p' filename.txt # 输出10-15行
sed -n '5p;7p' filename.txt # 输出第5行和第7行
4. 使用`awk`精确控制行输出:
bash
awk 'NR==3' filename.txt # 输出第3行
awk 'NR>=5 && NR<=8' filename.txt
按条件筛选(包含"error"的行):
bash
awk '/error/{print NR,$0}' filename.txt
5. 组合命令实现复杂需求:
- 跳过前N行:
bash
tail -n +6 filename.txt # 从第6行开始显示
- 每间隔N行输出:
bash
awk 'NR%3==0' filename.txt
6. 变量化操作(Bash脚本示例):
bash
start_line=20
end_line=30
sed -n "${start_line},${end_line}p" filename.txt
7. 性能对比:
- `head/tail`处理大文件最快(直接定位)
- `sed/awk`适合复杂行号逻辑
- 超过GB级文件建议使用`LC_ALL=C`提升处理速度
8. 特殊场景处理:
- 排除空行:
bash
awk 'NF' filename.txt | head -n 10
- 处理Windows换行符:
bash
dos2unix file.txt | head -n 5
9. 输出行号辅助调试:
bash
cat -n filename.txt | grep "search_term"
nl filename.txt | awk '$1>100'
10. 二进制文件安全处理:
bash
hexdump -C file.bin | head -n 20
strings file.bin | tail -n 5
注意:处理关键数据时建议先创建备份,行号参数超出文件范围时不同命令表现有差异(如`tail -n +100`对小文件会输出空内容)。对于持续更新的文件,建议使用`tail -F`替代`tail -f`以处理文件轮转情况。在脚本中使用这些命令时,应当检查命令返回值确保执行成功。