首页 > 解决方案 > 将 txt 文件的标题和内容连接成两列 csv、bash

问题描述

虽然有人问过类似的问题,但我为自己的特殊情况尴尬地挣扎。在我通过 ssh 进入的虚拟机访问的 gcloud 存储桶中,我有多个文件夹,每个文件夹都包含多个 txt 文件,每个文件夹都包含唯一的非结构化文本。例如,

folder1/txt1.txt
"lorem ipsum lorem ip"
   
folder1/txt2.txt
"lorem ip ip ip
lorrrrr                         um
ip ip"

folder2/txt1.txt
"loremmmmmmm"

我必须将每个文件夹变成一个单独的两列 csv,其中第 1 列是文件名,第 2 列是保留间距的文件内容。例如,

folder1.csv
"txt1, lorem ipsum lorem ip,
 txt2, lorem ip ip ip/    lorrrrr                         um/    ip ip"

folder2.csv
"txt1, loremmmmmmm"

对于单个文件夹,让我获得 25% 的东西是:

gsutil cat gs://bucket/folder1/*.txt > folder1.csv

但这似乎以一种不好的方式删除了结构,将行视为行:

folder1.csv
"lorem ipsum lorem ip
lorem ip ip ip
lorrrrr                         um
ip ip"

显然甚至没有开始使用文件名,可以通过以下方式独立收集:

(in /folder1/ ) ls > folder1_filenames.csv

真的,如果我能用 txt 文件的内容解决间距问题,我可以为每个文件夹干净地创建并合并 2 个 1 列 csv:一个用于 txt 的文件名,一个用于内容txts,因为每个文件夹的两个 csvs' 将具有完全相同的长度并且完全匹配。

我现在将继续阅读,但我想这对于更熟悉语法的人来说是显而易见的。

标签: bashcsvexport-to-csvgcloudgsutil

解决方案


推荐阅读