gpt4 book ai didi

bash - 如何将一个文件的头部与第二个文件的末尾与 shell 结合起来?

转载 作者:行者123 更新时间:2023-11-29 09:39:57 26 4
gpt4 key购买 nike

我有两个文件 a 和 b,我想生成第三个文件 c,它具有 a 的前三行和 b 的最后五行(最好使用单行命令)。

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

head -n 3 a | cat - b | sed '4,8d'

有没有更好的解决方案?

最佳答案

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

(head -3 a; tail -5 b) > c

或者在不调用子 shell 的情况下更好(由 Ignacio Vazquez-Abrams 提供):

{ head -3 a; tail -5 b; } > c

您可以在 Bash reference manual -> 3.2.4.3 Grouping Commands 中阅读相关内容:

( list )

Placing a list of commands between parentheses causes a subshell environment to be created (see Command Execution Environment), and each of the commands in list to be executed in that subshell. Since the list is executed in a subshell, variable assignments do not remain in effect after the subshell completes.

{ list; }

Placing a list of commands between curly braces causes the list to be executed in the current shell context. No subshell is created. The semicolon (or newline) following list is required.

测试

$ seq 10 > a
$ seq 20 30 > b
{head -3 a; tail -5 b; } > c
$ cat c
1
2
3
26
27
28
29
30

关于bash - 如何将一个文件的头部与第二个文件的末尾与 shell 结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33542761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com