如何直接将一个文件的列附加到另一个文件
How to directly append columns of one file to another file
要求:仅grep/cut/join/cat/regex/for/while.
我是 shell 实用程序的初学者。
我有包含相同行数的文件 A 和文件 B。我想将 fileB 的列附加到 fileA 中。
我正在尝试这个 (cat fileA && cat fileB) > fileC
。但它没有按要求工作。
预计:
文件A:
1
2
3
文件 B:
1
2
3
那么 fileC 应该有:
1 1
2 2
3 3
使用 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
$
粘贴命令只是使用默认的制表符分隔符垂直连接文件。您可以使用 -d 选项
覆盖定界符
与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
输出到文件C:
1 1
2 2
3 3
要求:仅grep/cut/join/cat/regex/for/while.
我是 shell 实用程序的初学者。
我有包含相同行数的文件 A 和文件 B。我想将 fileB 的列附加到 fileA 中。
我正在尝试这个 (cat fileA && cat fileB) > fileC
。但它没有按要求工作。
预计:
文件A:
1
2
3
文件 B:
1
2
3
那么 fileC 应该有:
1 1
2 2
3 3
使用 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
$
粘贴命令只是使用默认的制表符分隔符垂直连接文件。您可以使用 -d 选项
覆盖定界符与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
输出到文件C:
1 1 2 2 3 3