Shell
如果 col1 與 col4/col5 匹配,則分別在 col1 的空行中列印 col4/col5 中的所有值
我在 Linux 機器上有一個逗號分隔的文本文件。首先,我想將 col1 與 col4 和 col5 匹配,如果 col1 與 col4 匹配,則在 col1 為空的所有行中列印 col4 中的所有值,如果 col1 與 col5 匹配,則在 col1 為空的所有行中列印列 5 中的所有值,直到一個新值出現在 column1 中。輸入文件:
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
你可以使用這樣的東西:
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
也不$5
匹配,c
將設置為 1。