如何将一个文件的列直接附加到另一个文件

时间:2019-01-19 09:55:56

标签: bash awk cut cat

要求:仅grep / cut / join / cat / regex / for / while。

我是shell实用程序的初学者。

我的fileA和fileB包含相等数量的行。我想将fileB的列追加到fileA中。

我正在尝试(cat fileA && cat fileB) > fileC。但这不能按要求工作。

预期:

fileA:

1
2
3

fileB:

1
2
3

然后fileC应该具有:

1 1
2 2
3 3

2 个答案:

答案 0 :(得分:2)

使用bash:

#!/bin/bash

while true; do
  read -r f1 <&3 || break
  read -r f2 <&4 || break
  echo "$f1 $f2"
done 3<fileA 4<fileB >fileC

输出到fileC:

1 1
2 2
3 3

请参阅:https://unix.stackexchange.com/a/26604/74329

答案 1 :(得分:0)

使用Perl的一种方式

$ perl -e ' BEGIN { @a=map{chomp;$_} qx(cat fileA); @b=map{chomp;$_} qx(cat fileB); printf("%s %s\n",$a[$_],$b[$_]) for (0..$#a) } '
1 1
2 2
3 3

$

通常,这是使用粘贴命令完成的

$ paste -d" " fileA fileB
1 1
2 2
3 3

$

您的输入

$ cat fileA
1
2
3

$ cat fileB
1
2
3

$

paste命令仅使用默认的制表符分隔符垂直连接文件。您可以使用-d选项覆盖定界符