![查看所有 Bash/Shell 脚本相关的常见问题解答](https://www.alaica.com/wp-content/uploads/linux-104.png)
我有一个包含许多文件的目录。我正在尝试编写一个仅显示文件的前 10 或 20 行的 shell 脚本。如何在 Linux 或类 Unix 系统上显示文件的前 10 行或 20 行?
您可以在 Unix 或 Linux 上使用以下任一命令来查看文件的前 10 行:
打印前 10/20 行的head 命令示例
键入以下 head 命令以显示名为“bar.txt”的文件的前 10 行:
头 -10 bar.txt
键入以下 head 命令以显示名为“bar.txt”的文件的前 20 行:
头 -20 bar.txt
如何使用head命令查看文本文件的开头
传递-n选项,如下控制输出的长度:
head -n 5 /etc/passwd
也可以查看多个文件:
也可以使用 shell 管道即使用 head 命令来过滤命令或文件的输出:
可以将输出存储到 shell 变量中也:
head file1 file2 file3
head -2 /etc/passwd /etc/hosts
command1 | head
command1 | head -n 5
ls -l /etc/ | head -n 5
file=$(ls -1 -t | head -1)
cp "$file" ~/network-share/backups/
打印前 10/20 行的sed 命令示例
键入以下 sed 命令以显示名为“/etc/group”的文件的前 10 行:
sed -n 1 ,10p /等/组
键入以下 sed 命令以显示名为“/etc/group”的文件的前 20 行:
sed -n 1 ,20p /等/组
打印前 10/20 行的awk 命令示例
键入以下 awk 命令以显示名为“/etc/passwd”的文件的前 10 行:
awk 'FNR <= 10' / etc / passwd
键入以下 awk 命令以显示名为“/etc/passwd”的文件的前 20 行:
awk 'FNR <= 20' / etc / passwd
查看文件前 10/20 行的perl 命令示例
键入以下 perl 命令以显示名为“/etc/passwd”的文件的前 10 行:
perl -ne '1..10 并打印' / etc / passwd
键入以下 perl 命令以显示名为“/etc/passwd”的文件的前 20 行:
perl -ne '1..20 并打印' / etc / passwd
sed、awk、head 和 perl 命令的输出示例:
根:x:0:0:根:/根:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin 守护进程:x:2:2:守护进程:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 同步:x:5:0:同步:/sbin:/bin/sync 关机:x:6:0:关机:/sbin:/sbin/shutdown 暂停:x:7:0:暂停:/sbin:/sbin/halt 邮件:x:8:12:邮件:/ var / spool /邮件:/ sbin / nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
我强烈建议您阅读手册页——以获取更多信息。