将 2 个文件与 Shell 中的过去合并 - 换行符/回车符 return \n 问题

Merge 2 files with past in Shell - line break /carriage return \n problem

我想在每一行中合并两个文件:

fichier1.txt:

1;2;3
4;5;6
7;8;9

更进一步 2.txt:

a;b
c;d
e;f

我想让文件 fichierfusionné.txt 看起来像这样:

1;2;3;a;b
4;5;6;c;d
7;8;9;e;f

这是我的代码:

paste -d ';' {fichier1,fichier2}.txt > 'fichierfusionné.txt'

使用此代码,我的文件 fichierfusionné.txt 包含:

1;2;3
;a;b
4;5;6
;c;d
7;8;9;e;f

我不知道如何解决这个问题, 有什么办法可以避免 \n 吗?

你能帮帮我吗?

使用 awk 是处理不同类型换行符的一种方法。

这将使输出具有 Linux \n 行结尾。

awk 'FNR==NR {arr[FNR]=[=10=]; next}{print arr[FNR],[=10=]}' RS='(\r\n|\r|\n)' OFS=';' fichier1.txt fichier 2.txt > 'fichierfusionné.txt'

这个将使用 DOS 风格的 \r\n 行结尾。

awk 'FNR==NR {arr[FNR]=[=11=]; next}{print arr[FNR],[=11=]}' RS='(\r\n|\r|\n)' ORS='\r\n' OFS=';' fichier1.txt fichier 2.txt > 'fichierfusionné.txt'

最后,MAC \r 行结尾。

awk 'FNR==NR {arr[FNR]=[=12=]; next}{print arr[FNR],[=12=]}' RS='(\r\n|\r|\n)' ORS='\r' OFS=';' fichier1.txt fichier 2.txt > 'fichierfusionné.txt'