3つの列を持つファイルがあります。列3には次の遺伝子名が含まれています。
Rv0729,Rv0993,Rv1408
Rv0162c,Rv0761c,Rv1862,Rv3086
Rv2790c
各行の遺伝子数を印刷する方法は?
ベストアンサー1
1つの列とその中の列数だけを追加しようとしています。これは以下を使用して行うことができますawk
。
$ awk -F ',' '{ printf("%d,%s\n", NF, $0) }' data.in
3,Rv0729,Rv0993,Rv1408
4,Rv0162c,Rv0761c,Rv1862,Rv3086
1,Rv2790c
NF
awk
現在のレコード(行)のフィールド(列)数を含む変数です。各行にこの番号を印刷し、その後にコンマと行の残りの部分を印刷します。
他のオプション(結果は同じですが、よりきれいに見える場合があります):
$ awk -F ',' 'BEGIN { OFS=FS } { print NF, $0 }' data.in
FS
は各レコードをフィールドに分割するために使用されるフィールド区切り文字であるため、コマンドラインでカンマにawk
設定します(最初のソリューションに表示されます)。 ~である-F ','
OFS
出力FS
フィールド区切り文字は、入力の最初の行を読み取り前と同じに設定します。