Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Bash中逐行合并两个文件_Bash_Unix - Fatal编程技术网

如何在Bash中逐行合并两个文件

如何在Bash中逐行合并两个文件,bash,unix,Bash,Unix,我有两个文本文件,每一个都包含一行这样的信息 file1.txt file2.txt ---------- --------- linef11 linef21 linef12 linef22 linef13 linef23 . . . . . . 我想使用b

我有两个文本文件,每一个都包含一行这样的信息

file1.txt            file2.txt
----------           ---------
linef11              linef21
linef12              linef22
linef13              linef23
 .                    .
 .                    .
 .                    .
我想使用bash脚本逐行合并这些文件,以便获得:

fileresult.txt
--------------
linef11     linef21
linef12     linef22
linef13     linef23
 .           .
 .           .
 .           .
如何在Bash中实现这一点?

您可以使用:

检查


可能后跟一些命令,如
untabify
tabs2spaces

以下是非粘贴方法

awk

awk'开始{OFS=”“}{
getline行<“文件2”
打印$0,行
}'文件1
猛击

exec 6尝试以下操作

pr -tmJ a.txt b.txt > c.txt

Emacs中的M-x替换字符串将去掉制表符,可能Vim和其他一些文本编辑器也可以这样做。使用-d选项指定除制表符之外的分隔符。如果要使用分隔符,它如何工作?@SOaddict
paste-d“\n”*>results.txt
paste
将用一个选项卡分隔每一列,除非您使用
-d
选项覆盖,因此您可以使用类似于
awk
sed
等的内容。。。设置每行的格式。示例:
paste file1.txt file2.txt | awk'{printf'%-61s |%s\n',$1,$2}'
。。。这模拟了
diff--side-by-side
output)
paste-d”“
要连接行而不使用分隔符,也可以使用-s选项来更改分隔符。(+1)J选项在macOS Mojave上不起作用,但您的命令可以完美执行。谢谢
man paste
awk 'BEGIN {OFS=" "}{
  getline line < "file2"
  print $0,line
} ' file1
exec 6<"file2"
while read -r line
do
    read -r f2line <&6
    echo "${line}${f2line}"
done <"file1"
exec 6<&-
pr -tmJ a.txt b.txt > c.txt