Linuxシステムにはカンマ区切りのテキストファイルがあります。まず、col1をcol4とcol5と一致し、col1がcol4と一致すると、col1が空のすべての行からcol4のすべての値を印刷し、col1がcol5と一致すると、col1がすべて空のすべての行から5番目の列を印刷します。新しい値が列 1 に表示されるまでの値。入力ファイル:
va,group,subgroup,minor,major
A,AGT,rs123,A,G
,AGT,rs456,G,T
,AGT,rs457,T,G
,AGT,rs667,A,T
G,GSTT1,rs234,A,G
,GSTT1,rs668,T,G
,GSTT1,rs556,A,G
予想出力:
va,group,subgroup,minor,major
A,AGT,rs123,A,G
G,AGT,rs456,G,T
T,AGT,rs457,T,G
A,AGT,rs667,A,T
G,GSTT1,rs234,A,G
G,GSTT1,rs668,T,G
G,GSTT1,rs556,A,G
私が試したことは次のとおりです。
if [ $1 == $4] && [ -z "$1" ]
then
awk -F"\t -v OFS="\t" '{ for(N=1; N<=NF; N++) if($N=="") $N=$4 } 1' file > tmp1
else
echo "stop"
fi
ベストアンサー1
次のように使用できます。
awk '
BEGIN{FS=OFS=","; c=1}
$1==" "{$1=$c;print;next}
{c=1}
$1==$4{c=4}
$1==$5{c=5}1
' file
$4
両方が一致する場合は、$5
最後の項目が優先されます(ここ$5
:)。- 最初の行が空の場合、または一致も一致
$4
もない場合は1に設定されます。$5
c