假设我有一个文件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
获得输出。12
wc
答案2
在子 shell 中处理:
(head -n 5; tail -n 5) < file1.txt