特定の項目を含むタブで区切られたファイルの末尾に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
サポートしている場合は、試してみることができます\t
s
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 -