使用 bash/sed 将文件名的一部分添加到 .csv 文件

塔萨纳拉

我在一个目录中有几个文件是这样命名的;

1_38OE983729JKHKJV.csv

一个整数,后跟一个 ID(整数和 ID 都是唯一的)。

我需要将此 ID 附加到文件夹中每个文件的文件的每一行,以准备将文件导入数据库(并丢弃文件名的整数部分)。该文件的内容如下所示:

BW;20015;11,45;0,49;41;174856;4103399
BA;25340;11,41;0,55;40;222161;4599779
BB;800;7,58;0,33;42;10559;239887
HE;6301;9,11;0,39;40;69191;1614302
.
.
.
Total;112613;9,33;0,43;40;1207387;25897426

最终结果应该是这样的:

38OE983729JKHKJV;BW;20015;11,45;0,49;41;174856;4103399
38OE983729JKHKJV;BA;25340;11,41;0,55;40;222161;4599779
38OE983729JKHKJV;BB;800;7,58;0,33;42;10559;239887
38OE983729JKHKJV;HE;6301;9,11;0,39;40;69191;1614302
.
.
.
38OE983729JKHKJV;Total;112613;9,33;0,43;40;1207387;25897426

谢谢您的帮助!

编辑:为了清晰起见,拼写和词汇

拉文德辛格13

尝试在单个 awk 中执行以下操作,它也会处理在此操作期间打开的文件数,这样我们将避免最大打开文件数的错误。

awk 'FNR==1{close(val);val=FILENAME;split(FILENAME,a,"_");sub(/\..*/,"",a[2])} {print a[2]","$0}' *.csv

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Logrotate上使用日期和时间作为文件名的一部分?

使用basename捕获导致错误的文件名值的一部分

读取csv文件的一部分

在包含文件中使用字符串作为文件名的一部分

提取文件名的一部分并将其添加到数据框列表中

使用gsub()提取文件名的一部分

Shell-使用模式检索文件名的一部分

Mediawiki:如何在画廊中使用{{PAGENAME}}作为文件名的一部分?

使用threadGroup的名称作为结果时间图文件名的一部分

读取.csv文件的一部分

使用node.js脚本重命名文件名的一部分

从命令行使用其URL读取大量在线CSV文件的一部分

如何使用bash脚本删除文件名的一部分

如何在Java中提取CSV文件的文件名的一部分

批处理文件以分割文件名,并使用一部分将新的子目录移入

Android-使用文件名的一部分检查文件是否存在

使用SSIS中文件名的一部分进行文件识别

PHP使用已知文件名的一部分移动文件

R 帮助将多个 xlsx 文件导入列表,然后使用文件名的一部分将日期拉入列

cURL - 使用特定的响应头作为文件名的一部分

在 PHP 中分解文件名以使用其中的一部分

仅合并 csv 文件的一部分并添加带有 csv 文件名的列

是否可以使用 Git 钩子将提交的一部分添加到文件的源代码中?

如何在 bash 脚本中使用 (basename "${video%.*}") 获取文件名的一部分?

使用 sed 和模式匹配提取文件名的一部分

使用命令提示符将文件名附加到文件夹名称的一部分

仅使用文件名的一部分从文件名创建文件夹

使用 Windows 批处理文件根据文件名的一部分将文件分类到文件夹中

PowerShell 使用测试路径比较文件名的一部分