head 和 tail 命令一起输出文件

head 和 tail 命令一起输出文件

假设我有一个文件file1.txt名为1,2,3.. upto 100 linewise.

$> head -n 5 file1.txt //will display first 5 lines i.e. 1,2,3,4,5
$> tail -n 5 file1.txt // will display last 5 lines i.e. 96,97,98,99,100

我想用 1 条命令同时显示前 5 行和后 5 行的内容,

$> head tail -n 5 file1.txt // Something like this 1,2,3,4,5   96,97,98,99,100 (both together)

我怎样才能做到这一点?

答案1

您可以在 bash 中使用花括号来组合多个命令,并且还可以使用它们的标准输出标准错误合并:

{ head -n 5 file1.txt ; tail -n 5 file1.txt ; }

请注意,括号和括号内的命令之间有一个空格字符。这是因为{}在这里是保留字(内置于 shell 中的命令)。它们意味着将所有这些命令的输出组合在一起

还要注意,命令列表必须以分号 ( ;) 结尾。

如果你想为这样的命令组合创建一个“别名”,你可以创建一个功能(一个简单的Bash 别名将不起作用).bash_aliases像这样:

function headtail
{
  head "$@" ; tail "$@"
}

您可以像这样调用此函数,例如:

headtail -n6 file1.txt | wc -l

在上面的例子中,如果至少有 6 行,您将从命令中file1.txt获得输出。12wc

答案2

在子 shell 中处理:

(head -n 5; tail -n 5) < file1.txt

相关内容