交换文本文件列并创建新文件

Swap text file columns and create new file

我有数百个大文本文件,fileAnfileBn,在两个文件夹 AB 中,我想从中交换前六个每个文件的列。然后我会将新文件 fileCnfileDn 保存在文件夹 CD 中。 AB 中的文件数量相同,文件长度相同。

如何使用 bash 或正则表达式实现此目的?

这是 fileA1 的片段:

"2015-11-11 00:00:00.00",59841,0.327,3.275,1.89275,32.048,8,32,11.61
"2015-11-11 00:00:00.10",59842,0.086,3.56975,2.20325,32.10205,9,32,11.57
"2015-11-11 00:00:00.20",59843,0.26575,3.343,1.8285,32.06717,10,32,11.57
"2015-11-11 00:00:00.30",59844,-0.1915,3.28175,1.793,32.12122,11,32,11.57

fileB1:

"2015-11-11 00:00:00.00",59841,2.48975,2.8535,-0.6575,32.13168,9
"2015-11-11 00:00:00.10",59842,2.38975,3.10525,-0.62025,32.21362,10
"2015-11-11 00:00:00.20",59843,2.224,3.09825,-0.43375,32.19968,11
"2015-11-11 00:00:00.30",59844,2.102,3.029,-0.51825,32.21539,12

新文件 fileC1,前六列 fileB1 替换为 fileA1 的前六列:

"2015-11-11 00:00:00.00",59841,0.327,3.275,1.89275,32.048,9
"2015-11-11 00:00:00.10",59842,0.086,3.56975,2.20325,32.10205,10
"2015-11-11 00:00:00.20",59843,0.26575,3.343,1.8285,32.06717,11
"2015-11-11 00:00:00.30",59844,-0.1915,3.28175,1.793,32.12122,12

新文件 fileD1,前六列 fileA1 替换为 fileB1 的前六列:

"2015-11-11 00:00:00.00",59841,2.48975,2.8535,-0.6575,32.13168,8,32,11.61
"2015-11-11 00:00:00.10",59842,2.38975,3.10525,-0.62025,32.21362,9,32,11.57
"2015-11-11 00:00:00.20",59843,2.224,3.09825,-0.43375,32.19968,10,32,11.57
"2015-11-11 00:00:00.30",59844,2.102,3.029,-0.51825,32.21539,11,32,11.57

我查看了 paste 命令,但找不到将其设为批处理的方法。

您可以使用 pastecut 交换两个文件中的列,

paste -d, <(cut fileA1 -d, -f1-6) <(cut fileB1 -d, -f7) > fileC1
paste -d, <(cut fileB1 -d, -f1-6) <(cut fileA1 -d, -f7-9) > fileD1