タブ区切りファイルに2つの新しい列を追加する

タブ区切りファイルに2つの新しい列を追加する

特定の項目を含むタブで区切られたファイルの末尾に2つの新しい列を追加する必要があります。私のファイルは次のとおりです

chr2    88861474    88861574    IGKJ2
chr2    88861170    88861270    IGKJ3
chr2    88860835    88860935    IGKJ4
chr2    88860517    88860617    IGKJ5

以下は私の予想結果です

chr2    88861474    88861574    IGKJ2   0   -
chr2    88861170    88861270    IGKJ3   0   -
chr2    88860835    88860935    IGKJ4   0   -
chr2    88860517    88860617    IGKJ5   0   -

0-項目を使用して別のファイルを生成できます。コマンドを使用して、paste新しく作成されたファイルを元のファイルとマージして目的の出力を取得できますが、他のオプションを探しています(awkまたは使用sed)。

答え1

awkでは、次のように見えます。

awk -v OFS='\t' '{print $0, "0", "-"}' inputfile

OFS出力区切り記号をに設定し、各行の後tabに必要なフィールドを印刷します。

答え2

コマンドの代替部分をsedサポートしている場合は、試してみることができます\ts

sed 's/$/\t0\t-/' inputfile

それ以外の場合、シェルはksh93$'...'スタイルの引用をサポートします。

sed $'s/$/\t0\t-/' inputfile

そうでない場合は、いつでも次のことができます。

TAB=$(printf '\t')
sed "s/\$/${TAB}0${TAB}-/" inputfile

答え3

以下のみを使用してくださいbash

#!/bin/bash

while read line
do
   printf "%s\t0\t-\n" "${line}"
done < inputfile

答え4

awk 'BEGIN{OFS="\t"}{$(NF+1)="0\t-";print }' filename

出力

chr2    88861474    88861574    IGKJ2   0   -
chr2    88861170    88861270    IGKJ3   0   -
chr2    88860835    88860935    IGKJ4   0   -
chr2    88860517    88860617    IGKJ5   0   -

関連情報