Skip to main content
added 21 characters in body
Source Link
pLumo
  • 23.2k
  • 2
  • 43
  • 70

Not sure if this is any fast:

awk -v value=0 '
NR==FNR{for(i=2;i<=NF;i++){if($i==value){s[i]++}}}
NR!=FNR {
  printf "%s"OFS,$1
  for (i=2;i<=NF;i++){if(s[i]>1)last=i}
  for (i=2;i<=NF;i++){
    if(s[i]>1){
      if (i==last) printf "%s\n",$i;$i
      else printf "%s"OFS,$i}
  }
}
' file file

You might want to set OFS to tab (BEGIN{OFS="\t"}.)

Not sure if this is any fast:

awk -v value=0 '
NR==FNR{for(i=2;i<=NF;i++){if($i==value){s[i]++}}}
NR!=FNR {
  printf "%s"OFS,$1
  for (i=2;i<=NF;i++){if(s[i]>1)last=i}
  for (i=2;i<=NF;i++){
    if(s[i]>1){if (i==last) printf "%s\n",$i; else printf "%s"OFS,$i}
  }
}
' file file

Not sure if this is any fast:

awk -v value=0 '
NR==FNR{for(i=2;i<=NF;i++){if($i==value){s[i]++}}}
NR!=FNR {
  printf "%s"OFS,$1
  for (i=2;i<=NF;i++){if(s[i]>1)last=i}
  for (i=2;i<=NF;i++){
    if(s[i]>1){
      if (i==last)printf "%s\n",$i
      else printf "%s"OFS,$i}
  }
}
' file file

You might want to set OFS to tab (BEGIN{OFS="\t"}.)

Source Link
pLumo
  • 23.2k
  • 2
  • 43
  • 70

Not sure if this is any fast:

awk -v value=0 '
NR==FNR{for(i=2;i<=NF;i++){if($i==value){s[i]++}}}
NR!=FNR {
  printf "%s"OFS,$1
  for (i=2;i<=NF;i++){if(s[i]>1)last=i}
  for (i=2;i<=NF;i++){
    if(s[i]>1){if (i==last) printf "%s\n",$i; else printf "%s"OFS,$i}
  }
}
' file file