如何删除包含所有零的文本文件中的行(行)和列.
例如,我有一个文件:
例如,我有一个文件:
1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1
1 0 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1
我可以使用sed和egrep来做到这一点
sed '/0 0 0 0/d' or egrep -v '^(0 0 0 0 )$'
解决方法
另一个awk变种:
awk '{show=0; for (i=1; i<=NF; i++) {if ($i!=0) show=1; col[i]+=$i;}} show==1{tr++; for (i=1; i<=NF; i++) vals[tr,i]=$i; tc=NF} END{for(i=1; i<=tr; i++) { for (j=1; j<=tc; j++) { if (col[j]>0) printf("%s%s",vals[i,j],OFS)} print ""; } }' file
扩展表格:
awk '{ show=0; for (i=1; i<=NF; i++) { if ($i != 0) show=1; col[i]+=$i; } } show==1 { tr++; for (i=1; i<=NF; i++) vals[tr,i]=$i; tc=NF } END { for(i=1; i<=tr; i++) { for (j=1; j<=tc; j++) { if (col[j]>0) printf("%s%s",OFS) } print "" } }' file