在Bash脚本中使用AWK并附加两个文件,其中第二个文件位于另一个文件夹中

时间:2018-02-26 07:18:41

标签: bash awk

我有两个文件:

FILE1.TXT:

samplefolder_appendtext.txt [ 

1.23 34.2 12.4 5.34 56.3

12.2 24.1 1.42 21.4 1.24

42.1 12.4 12.4 56.5 2.53

1.24 4.64 2.23 1.42 1.42

1.45 12.4 45.2 12.4 35.2 ]

appendtext.txt:

1.12 34.1 12.4 53.1

12.3 12.4 45.2 23.2

12.4 34.1 34.5 56.3

12.2 34.2 12.3 34.2 

12.4 34.2 12.4 12.1

第二个文件位于“samplefolder”文件夹

如何使用AWK

获取如下输出文件
samplefolder_appendtext.txt [

1.23 34.2 12.4 5.34 56.3 1.12 34.1 12.4 53.1

12.2 24.1 1.42 21.4 1.24 12.3 12.4 45.2 23.2

42.1 12.4 12.4 56.5 2.53 12.4 34.1 34.5 56.3

1.24 4.64 2.23 1.42 1.42 12.2 34.2 12.3 34.2 

1.45 12.4 45.2 12.4 35.2 12.4 34.2 12.4 12.1 ]

1 个答案:

答案 0 :(得分:0)

考虑到您的2个输入文件,我们可以说file1file2,并且正如 RavinderSingh13 所回答的那样,paste命令会执行诀窍如下所示:

$ cat file1 
samplefolder_appendtext.txt [ 

1.23 34.2 12.4 5.34 56.3

12.2 24.1 1.42 21.4 1.24

42.1 12.4 12.4 56.5 2.53

1.24 4.64 2.23 1.42 1.42

1.45 12.4 45.2 12.4 35.2 ]

$ cat file2
1.12 34.1 12.4 53.1

12.3 12.4 45.2 23.2

12.4 34.1 34.5 56.3

12.2 34.2 12.3 34.2 

12.4 34.2 12.4 12.1

$ (head -2 file1; paste -d' ' <(sed '1,2d;s/ ]//g' file1) file2) | sed '$s/$/ ]/'
samplefolder_appendtext.txt [ 

1.23 34.2 12.4 5.34 56.3 1.12 34.1 12.4 53.1

12.2 24.1 1.42 21.4 1.24 12.3 12.4 45.2 23.2

42.1 12.4 12.4 56.5 2.53 12.4 34.1 34.5 56.3

1.24 4.64 2.23 1.42 1.42 12.2 34.2 12.3 34.2 

1.45 12.4 45.2 12.4 35.2 12.4 34.2 12.4 12.1 ]
  1. sed '1,2d;s/ ]//g' file1用于删除file1末尾的前2行和最后]
  2. paste -d' ' <(sed '1,2d;s/ ]//g' file1) file2用于重定向sed的stdout,就像它是一个文件一样,并将其与file2一起传递给paste命令,在此命令中将分隔符设置为空格。
  3. (head -2 file1;...) | sed '$s/$/ ]/'用于格式化输出文件以符合您的输出格式:添加file1的第2行并在输出]的末尾添加。