Bash 如何使用shell将一个文件的头与第二个文件的尾合并?

Bash 如何使用shell将一个文件的头与第二个文件的尾合并?,bash,Bash,我有两个文件a和b,希望生成第三个文件c,其中包含a的前三行和b的最后五行(最好使用一行命令) 这就是我目前得到的,但只有当我知道我的第二个文件(在本例中为10行)的长度时,这才有效: 有更好的解决方案吗?只需将命令分组并重定向其输出: (head -3 a; tail -5 b) > c 或者更好,无需调用子shell(由提供): 您可以在以下网站上阅读: 在括号之间放置命令列表会导致子shell 要创建的环境(请参见命令执行环境),以及 列表中要在该子shell中执行的每个命令。自从

我有两个文件a和b,希望生成第三个文件c,其中包含a的前三行和b的最后五行(最好使用一行命令)

这就是我目前得到的,但只有当我知道我的第二个文件(在本例中为10行)的长度时,这才有效:


有更好的解决方案吗?

只需将命令分组并重定向其输出:

(head -3 a; tail -5 b) > c
或者更好,无需调用子shell(由提供):

您可以在以下网站上阅读:

在括号之间放置命令列表会导致子shell 要创建的环境(请参见命令执行环境),以及 列表中要在该子shell中执行的每个命令。自从 列表在子shell中执行,变量赋值不保留 在子shell完成后生效

{ list; }
将命令列表放置在大括号之间会导致该列表 在当前shell上下文中执行。没有创建子shell。这个 以下列表需要分号(或换行符)

试验
尽管不需要调用子shell<代码>{…;}>..
{ head -3 a; tail -5 b; } > c
( list )
{ list; }
$ seq 10 > a
$ seq 20 30 > b
{head -3 a; tail -5 b; } > c
$  cat c
1
2
3
26
27
28
29
30