タブ区切りファイルの最初と5番目の列を検索して、5番目の列のスペースをタブに変換します。

タブ区切りファイルの最初と5番目の列を検索して、5番目の列のスペースをタブに変換します。

タブで区切られた列を含むファイルがありますtsv。スペースで区切られた値を持つ5番目の列を取得したいと思います。区切りスペースをタブ区切りに変換し、新しいファイルとして保存します。

試み:

cut -d"\t" -f"4" input.tsv
awk -v OFS="\t" '$1=$1' input.tsv > output.tsv

入力する:

Composite_Element_REF   Gene_Symbol     Chromosome      Genomic_Coordinate      TCGA-KL-8323-01A-21D-2312-05 TCGA-KL-8324-01A-11D-2312-05 TCGA-KL-8325-01A-11D-2312-05 
cg00000027      RBL0    14      53468110        0.0545368833399913 0.635089208882213 0.0581022991274144
cg00000028      RBL1    15      53468111        0.0545366588241415 0.635089205024173 0.0581085373336217
cg00000029      RBL2    16      53468112        0.0545366588040571 0.635089205078394 0.0581085373332275

予想出力:

Composite_Element_REF   TCGA-KL-8323-01A-21D-2312-05    TCGA-KL-8324-01A-11D-2312-05    TCGA-KL-8325-01A-11D-2312-05
cg00000027     0.0545368833399913    0.635089208882213    0.0581022991274144
cg00000028    0.0545366588241415    0.635089205024173    0.0581085373336217
cg00000029    0.0545366588040571    0.635089205078394    0.0581085373332275

ベストアンサー1

必要なものが、一部の入力ファイルで最初と5番目のタブで区切られたフィールドをインポートしてから、そのフィールドinput.tsvに含まれるスペースをタブに変更することである場合は、以下をcut使用してこれを実行できます。tr

cut -f 1,5 input.tsv | tr ' ' '\t' >output.tsv

まず、入力から最初と5番目のフィールドを抽出し、すべての空白文字をタブ文字に変更し、出力をファイルに書き込みます。最初のフィールドが変更されていない場合は、フィールドにスペースが含まれていないと見なされます。

タブはデフォルトの区切り文字であるため、cutこのオプションを使用する必要はありません-d

または以下を使用してくださいawk

awk 'BEGIN { OFS=FS="\t" }
    {
        nf = split($5, a, " ")
        $0 = $1

        for (i = 1; i <= nf; ++i) $(NF+1) = a[i]

        print
    }' input.tsv >output.tsv

これにより、タブで区切られた5番目のフィールドがスペースに分割され、すべての元のフィールドが最初のフィールドで上書きされます。結果レコードを出力する前に、ループの最初のフィールドの後に分割フィールドを追加します。

Miller(mlr)を使用すると、入力をヘッドレスTSV(ヘッダーを単にデータとして扱うようにヘッドレス)に読み込み、関心のあるフィールドを切り取り、各レコードを私たちがするように再生成することを選択できますが、よりawk短いです。

mlr --tsv -N put '$* = {1:$1, 2:splita($5, " ")}' input.tsv >output.tsv

各コマンドの出力は次のようになります。

Composite_Element_REF   TCGA-KL-8323-01A-21D-2312-05    TCGA-KL-8324-01A-11D-2312-05    TCGA-KL-8325-01A-11D-2312-05
cg00000027      0.0545368833399913      0.635089208882213       0.0581022991274144
cg00000028      0.0545366588241415      0.635089205024173       0.0581085373336217
cg00000029      0.0545366588040571      0.635089205078394       0.0581085373332275

最初のフィールドにヘッダーが必要であると仮定し、-05入力の2行目の別のヘッダーは誤っているため、ヘッダー行の最後のフィールドの末尾に追加する必要があることに注意してください。

おすすめ記事