我有一个包含三列的文件。第 3 列包含基因名称,如下所示:
Rv0729,Rv0993,Rv1408
Rv0162c,Rv0761c,Rv1862,Rv3086
Rv2790c
Run Code Online (Sandbox Code Playgroud)
如何打印每行中的基因数量?
Kus*_*nda 10
您只想添加一列,其中包含列数。这可以使用awk
:
$ awk -F ',' '{ printf("%d,%s\n", NF, $0) }' data.in
3,Rv0729,Rv0993,Rv1408
4,Rv0162c,Rv0761c,Rv1862,Rv3086
1,Rv2790c
Run Code Online (Sandbox Code Playgroud)
NF
是一个awk
变量,包含当前记录(行)中的字段(列)数。我们为每一行打印这个数字,后跟一个逗号和行的其余部分。
另一种选择(相同的结果,但可能看起来更简洁):
$ awk -F ',' 'BEGIN { OFS=FS } { print NF, $0 }' data.in
Run Code Online (Sandbox Code Playgroud)
FS
是awk
用于将每个记录拆分为字段的字段分隔符,我们-F ','
在命令行上将其设置为逗号(如第一个解决方案)。OFS
是输出字段分隔符,我们将其设置为与FS
读取第一行输入之前相同。
如果您想计算Rv[0-9]{4}c?
模式的出现次数,而不是问题主题所建议的逗号分隔字段的数量,您可以这样做:
awk '{print gsub(/Rv[0-9]{4}c?/, "&"), $0}'
Run Code Online (Sandbox Code Playgroud)