如何使用 bash 和 for 循环在 Linux 中水平连接文本文件?

问题描述

所以基本上我有两个文件夹,每个文件夹都包含 174 个 txt 文件。 Folder1 包含具有以下名称文件:file1.txt、file2.txt、file3.txt、...、file174.txt

Folder2 包含具有以下名称文件:file_1.txt、file_2.txt、...、file_174.txt。区别仅在于下划线。我想合并每个对应的文件(意思是 file1 与 file_1、file2 与 file_2 等),这样我最终会得到 174 个合并文件

合并必须是水平的。第一个文件夹中的文件具有以下结构

0
1
1

第二个文件夹中的文件结构如下

30 58 102 120
12 120 214.4 1210
20 312 543.2 912.33

我希望合并是水平的,这样下一个文本文件的结果结构是这样的

0 30 58 102 120
1 12 120 214.4 1210
1 20 312 543.2 912.33

我的方法是使用以下带有字符串格式、for 循环和粘贴命令的 bash 脚本。

#!/bin/bash
# A shell script to merge our 174 txt files
FMT1 = 'Folder1/file%d.txt'
FMT2 = 'Folder2/file_%d.txt'
FMT3 = 'MergedFolder/file%d.txt'
for (( i = 0; i < 175; i++ ))     
do

      printf -v VAR "$FMT1" i
      printf -v VAR "$FMT2" i
      printf -v VAR "$FMT3" i
      paste -d ' ' FMT1 FMT2 > FMT3

done

我收到错误消息,说 FMT 1 2 和 3 未定义且不存在此类目录

是否有更好的方法使用 Python?谢谢。

解决方法

只需在您找到 cdFolder_1 的目录中的 Folder_2 并将其作为 bash 脚本运行。

for ((i=1; i<=174; i++))
do

    paste -d" " Folder_1/file${i}.txt Folder_2/file_${i}.txt > ${i}_merged.txt

done