在两个文件中读取两列并将其输出到另一个文件

时间:2018-07-03 10:33:47

标签: bash awk

我最近发布了这个问题-paste -d " " command outputting a return separated file

但是我担心文本文件中的格式会导致它出错。因此,我尝试使用awk来做到这一点。

我对awk经验不足,但是目前我有以下知识:

 awk {print $1} file1 | {print $1} file2 > file 3

我应该使用这种语法吗?出现错误,提示缺少},每个文件包含一列数字和相同数量的行。

2 个答案:

答案 0 :(得分:0)

看到您的OLD帖子似乎是您可以控制文件中的M个字符。要删除文件中的M个控制字符,请使用dos2unix实用程序或使用以下命令。

第一个:要在各处删除垃圾字符。

tr -d '\r' < Input_file > temp_file && mv temp_file Input_file

2nd:要仅在最后一行删除它们,请使用以下命令。

awk '{sub(/\r$/,"")} 1' Input_file > temp_file && mv temp_file Input_file

我相信,一旦您删除了垃圾字符,您的paste命令也应该可以正常工作。在输入文件中修复控件M字符后,运行以下命令。

paste -d " " Input_file1  Input_file2 > Output_file

或将2个文件串联起来,只需使用:(考虑到您的Input_files包含1列,或者您希望输出中包含整行)

cat Input_file1 Input_file2 > output_file

答案 1 :(得分:0)

awk进行救援:

awk 'FNR==NR{a[FNR]=$1;next}{print a[FNR],$1}' a.txt b.txt > output.txt

a.txt:

1
2
3
4
5

b.txt:

A
B
C
D
E

output.txt:

1 A
2 B
3 C
4 D
5 E