通过排除第二个和第三个文件中的标题,将三个文件合并为一个主文件

Ram*_*Ram 8 ksh aix text-processing

我有三个文件,其中有 n 行,如下所示

样本1.txt

------------------------------
Date        Time    Name    
------------------------------
2013/10/12  12:09:09    Krish
2013/10/12  13:12:01    Ramb
2013/10/12  15:28:39    Likha
2013/10/12  15:56:12    Mat
.
.
.
Run Code Online (Sandbox Code Playgroud)

样本2.txt

------------------------------
Date        Time    Name    
------------------------------
2013/10/12  11:19:21    Jack
2013/10/12  12:11:09    Rob
2013/10/12  15:45:12    Rick
2013/10/12  22:11:10    Phil
.
.
.
Run Code Online (Sandbox Code Playgroud)

示例3.txt

------------------------------
Date        Time    Name    
------------------------------
2013/10/12  12:09:09    Eric
2013/10/12  13:12:01    Bob
2013/10/12  15:28:39    Mike
2013/10/12  15:56:12    Nick
.
.
.
Run Code Online (Sandbox Code Playgroud)

我需要通过排除 Sample2.txt 和 Sample3.txt 中的标题(前 3 行)将这三个文件合并到一个文件(Master.txt)中,如下所示

期望输出

$cat Master.txt

------------------------------
Date        Time    Name    
------------------------------
2013/10/12  12:09:09    Krish
2013/10/12  13:12:01    Ramb
2013/10/12  15:28:39    Likha
2013/10/12  15:56:12    Mat
2013/10/12  11:19:21    Jack
2013/10/12  12:11:09    Rob
2013/10/12  15:45:12    Rick
2013/10/12  22:11:10    Phil
2013/10/12  12:09:09    Eric
2013/10/12  13:12:01    Bob
2013/10/12  15:28:39    Mike
2013/10/12  15:56:12    Nick
Run Code Online (Sandbox Code Playgroud)

注意:在带有 Ksh 88 的 AIX 机器上

Sté*_*las 18

{ cat sample1.txt; tail -n +4 sample2.txt; tail -n +4 sample3.txt; } > out.txt
Run Code Online (Sandbox Code Playgroud)

  • @peterph,不在 AIX 上,不在 POSIX 规范中(只允许正数) (2认同)

pet*_*rph 7

sed '4,${/^---/d;/^Date/d;}' sample1.txt sample2.txt sample3.txt > out.txt
Run Code Online (Sandbox Code Playgroud)

  • +1 但你能补充一点解释吗?`${}` 语法在 `sed` 中有什么作用? (2认同)