我有一个庞大的数据集,我想删除值为-9的列。我有20行和百万列。
我想删除第1,9,11列(它们的值都与-9相同)这只是我的数据集的一小部分。我不能计算哪些列在我的完整数据集上全是-9。
感谢你的帮助,
谢谢!
sample1 -9 3 -9 0-2 -9 -9 -9 1 -9
sample2 -9 -9 0 -9 0 2 -9 -9 -9 -9
sample3 -9 -9 -9 -9 -9 2 3 1 -9 -9 -9
sample4 -9 -9 -9 -9 2 -9 1 -9 -9 -9
输出;
sample1 3 -9 0 -9 2 -9 -9 1
sample2 -9 0 -9 0 2 -9 -9 -9
sample3 -9 -9 -9 -9 2 3 1 -9
sample4 -9 -9 -9 2 -9 1 -9
我尝试用perl删除它。
发布于 2015-02-11 02:32:49
你可以试试下面的awk脚本。
cat a.txt | awk '{
for (Col = 1; Col <= NF; Col++) { a[NR, Col] = $Col }
}
END {
for (Col = 1; Col <= NF ; Col++) {
j=0;
for( Row = 1 ; Row<= NR; Row++)
{
if (a[Row,Col] != -9 )
{ j=1 }
}
if( j == 0 ) { continue;}
for(Row=1; Row<= NR; Row++){
printf a[Row,Col] (Row==NR ? RS : FS)
}
}
}' | awk '{
for (Col = 1; Col <= NF; Col++) { a[NR, Col] = $Col }
}
END {
for (Col = 1; Col <= NF ; Col++) {
for(Row=1; Row<= NR; Row++){
printf a[Row,Col] (Row==NR ? RS : FS)
}
}
}'测试:
-9 -9 2 5 -9 3
-9 2 3 3 -9 -9
-9 \f25 7 4 6 -9 \f25 4
%1%2%0
-9 2 5 3
2 3 3 -9
7 4 6 4
步骤:
参考:link
https://stackoverflow.com/questions/28430074
复制相似问题