列値でフィルタリングしてファイルに書き込む

列値でフィルタリングしてファイルに書き込む

次の表があります。

BB1520_v1.0_0103エクソン3329 3601
BB1520_v1.0_0103エクソン3650 4040
BB1520_v1.0_0089 エクソン 1862
BB1520_v1.0_0089エクソン1312 1357
BB1520_v1.0_0089エクソン1423 1531
BB1520_v1.0_0084エクソン5196 5283

列1の値で行を抽出して3つの異なるファイルに保存したいと思います。

成功せずに次のコードを試してみました。

 awk -F, '{print >$1".txt"}' file.txt

ベストアンサー1

正しいアプローチがありますが、カンマ(-F,)ではなくスペースにフィールドを分割する必要があります。あなたの質問は、「行は最初の列と同じ名前のファイルに保存する必要があります」と解釈されます。

$ cat file.txt 
BB1520_v1.0_0103        exon    3329    3601
BB1520_v1.0_0103        exon    3650    4040
BB1520_v1.0_0089        exon    1       862
BB1520_v1.0_0089        exon    1312    1357
BB1520_v1.0_0089        exon    1423    1531
BB1520_v1.0_0084        exon    5196    5283
$ awk '{ print >$1".txt"}' file.txt
$ cat BB1520_v1.0_0103.txt 
BB1520_v1.0_0103        exon    3329    3601
BB1520_v1.0_0103        exon    3650    4040

おすすめ記事