如何使用 bash 和 for 循环水平连接 Linux 中的文本文件?
How do I horizontally concatenate text files in Linux using bash and a for loop?
基本上我有两个文件夹,每个文件夹包含 174 个 txt 文件。 Folder1 包含具有以下名称的文件:file1.txt、file2.txt、file3.txt、...、file174.txt
文件夹 2 包含具有以下名称的文件: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
我的方法是使用以下 bash 带有字符串格式、for 循环和粘贴命令的脚本。
#!/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?谢谢。
只需 cd
在您找到 Folder_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
基本上我有两个文件夹,每个文件夹包含 174 个 txt 文件。 Folder1 包含具有以下名称的文件:file1.txt、file2.txt、file3.txt、...、file174.txt
文件夹 2 包含具有以下名称的文件: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
我的方法是使用以下 bash 带有字符串格式、for 循环和粘贴命令的脚本。
#!/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?谢谢。
只需 cd
在您找到 Folder_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