将行ID添加到多个文件中,并在bash中连续计数



说我有文件a.tsv,b.tsv和c.tsv。

执行cat -n A.tsv > A-id.tsv是我想要一个文件的输出。您如何制作一个简单的bash命令来处理所有3个文件,以使行ID与上一个文件连续,以便我可以获得3个单独的文件A-ID.TSV,B-ID.TSV和C-ID.tsv?

例如,如果A.TSV有3行,则B.TSV将以4的输出格式开始,类似于cat -n B.tsv

为什么不只是 cat A.tsv B.tsv C.tsv | cat -n > ABC.tsv

通过Twalberg

或更好的是,CAT -N A.TSV B.TSV c.tsv> abc.tsv

更新:

考虑到这对您的Linux发行版不起作用,这是多种选择:

cat A.tsv B.tsv C.tsv | nl > ABC.tsv

cat A.tsv B.tsv C.tsv | grep -n '^' > ABC.tsv-此选项会产生不同类型的格式,即:$ linenumber:$ line

这是一个尴尬的替代方法:

awk '{outfile=FILENAME; sub(".tsv", "-id.tsv", outfile); printf("%6d %sn", NR, $0) >outfile;}' A.tsv B.tsv C.tsv

更新,优化版本:

awk 'FNR==1 {outfile=FILENAME; sub(".tsv", "-id.tsv", outfile);} {printf("%6d %sn", NR, $0) >outfile;}' A.tsv B.tsv C.tsv

相关内容

  • 没有找到相关文章

最新更新