说我有文件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