Bash 如何将一个文件的列直接附加到另一个文件
要求:仅限grep/cut/join/cat/regex/for/while 我是shell实用程序的初学者 我有包含相同行数的fileA和fileB。我想将fileB列附加到fileA中 我正在尝试这个Bash 如何将一个文件的列直接附加到另一个文件,bash,awk,cut,cat,Bash,Awk,Cut,Cat,要求:仅限grep/cut/join/cat/regex/for/while 我是shell实用程序的初学者 我有包含相同行数的fileA和fileB。我想将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
(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
$
“粘贴”命令仅使用默认的制表符分隔符垂直连接文件。您可以用bash使用-d选项覆盖分隔符:
#!/bin/bash
while true; do
read -r f1 <&3 || break
read -r f2 <&4 || break
echo "$f1 $f2"
done 3<fileA 4<fileB >fileC
#/bin/bash
虽然真实;做
阅读-r f1可能的重复请在问题中添加示例输入和该示例输入所需的输出。请阅读操作系统的使用要求,我是否可以知道将其限制为仅限于这些命令的原因Sos is linux(ubuntu 18.04)。我必须遵守给定的要求。我建议在注释中粘贴到OP,但OP TENDED NOT allowed:)这是我需要的。谢谢,我知道你为什么添加了| | break
而没有break
无限循环(为true
)永远不会结束。因此,当文件A或文件B被读取到末尾时,循环结束。为什么不在读取-r f1时
1 1
2 2
3 3