微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何使用 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。