linux - 将文件名添加到制表符分隔文件中每一行开头的循环(从而生成一个新列))

标签 linux bash sed awk

我对此很陌生,并尝试遍历大约 19000 个文件(全部在一个目录中),以便在每个文件的每一行的开头插入相应的文件名。

稍后我将连接这些文件以获得一个包含我分析所需的所有数据的文件。

文件名显示以下模式:

V_foo_V_bar 每个文件名中的两个 V_ 部分是不变的。其余各不相同。

我试过:

for f in V*; do awk '{print "$f" $} file 

我在 $f 两边加括号和不加括号的情况下都没有用。

带括号的字符串 $f 被插入到文件名中 没有括号,什么都不插入

非常感谢您的帮助,因为我已经尝试了其他几个同样无用的想法,而且沮丧敲响了我的门

非常感谢。

最佳答案

要在每个文件的每一行的开头插入文件名,请尝试如下操作:

awk '{print FILENAME, $0}' V*

FILENAME 是一个带有文件名的内置变量。 V* 将通配到您目录中的所有文件。

如果你想在名称和行之间放置一个分隔符,你可以这样做:

awk '{print FILENAME " : " $0}' V*

关于linux - 将文件名添加到制表符分隔文件中每一行开头的循环(从而生成一个新列)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21943458/

相关文章:

Python - 为什么按钮有时有效而有时无法执行分配的所有逻辑?

Linux:如何将目录中的所有文件重命名为大写?

linux - 如何从 awk 语句添加时间格式 hh :mm. ss

bash -/bin/sh : apt-get: not found

regex - 替换具有多个字符的字符串

ubuntu - 使用正则表达式查找两个双引号之间的内容

linux - 如何使用指定的字符串进行 grep 并将值存储在 unix 中

linux - 使用脚本编辑文件中的文本

linux机器上可以查看页表吗

bash - LC_ALL=C 对加速 grep 的影响