linux - 将文件名添加到linux中的空文件

标签 linux bash

我已经将文件名添加为下游步骤的标识符 *。

使用以下命令

awk 'BEGIN{FS=OFS="\t"};
{print FILENAME, $0}' $i > appended.$i

假设我有 CELLLINE1.txt 的文件内容

chr2 1020120 1202420 5

按照上述命令,我添加了一个包含文件名的列

CELLLINE1.txt chr2 1020120 1202420 5

是否可以在没有内容的空文件(0 字节)中做同样的事情。

有什么建议吗

最佳答案

您可以在 awk 语句之外使用 if 来执行此操作:

test 0 -eq $(wc -l test | cut -d" " -f 1)&& echo $i > appended.$i || awk 'BEGIN{FS=OFS="\t"};{print FILENAME, $0}' $i > appended.$i

您也可以在 awk 中使用一些变量来执行此操作:

awk 'BEGIN{{FS=OFS="\t"}{linecount==0}}{linecount+=1}{print FILENAME, $0} END{if (linecount==0) print FILENAME}' $i > appended.$i

新变量linecountBEGIN设置为0,然后在END测试是否它仍然是 0。如果是这样,它会打印 FILENAME

关于linux - 将文件名添加到linux中的空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33083083/

相关文章:

c++ - 错误 : expected constructor, 析构函数,或非常简单的示例中的类型转换

linux - 计算并打印列中字符串的平均值

linux - 无法生成 buildroot(正在检查目标文件的后缀...配置 : error)

bash - 来自 ls 结果的 mkdir

linux - 在 linux 中使用 awk 匹配文件

bash - 编写 haskell 脚本时,在意外标记附近出现语法错误

linux - Composer在您的平台中检测到问题: Your Composer dependencies require a PHP version ">= 7.3.0"

PHP readdir( ) 返回 ". "和 ".. "条目

c - 使用 bash + 环境变量替换文件中的字符串

linux - 如何将 bash 脚本作为命令运行?