从矩阵中的单元格中删除空格

时间:2012-11-29 20:51:08

标签: perl matrix sed awk tr

我有一个矩阵(5800行和350列)的数字。每个单元格都是

0 / 0
1 / 1
2 / 2

删除每个单元格中所有空格的最快方法是:

0/0
1/1
2/2

Sed,R,任何最快的事情。

4 个答案:

答案 0 :(得分:1)

使用sed:

sed "s/ \/ /\//g" input.txt

这意味着:

  

将字符串" / "/ \/ /)替换为一个斜杠(/\/)并全局(/g)。

答案 1 :(得分:1)

这里有一个awk替代品完全相同:

awk '{gsub(" ",""); print}' input.txt > output.txt

<强>说明:

  • awk '{...}':调用awk,然后为每一行执行大括号括起来的东西。
  • gsub(" ","");:用空字符串替换所有空格字符(一行或多行)。
  • print:打印整行
  • input.txt:将输入文件指定为awk的参数
  • > output.txt:将输出重定向到文件。

答案 2 :(得分:1)

如果你想提高效率,你应该使用coreutils tr来完成这么简单的任务:

tr -d ' ' < infile

我使用GNU awk,GNU sed,perl v5.14.2和GNU coreutils v8.13将发布的答案与300K文件进行了比较。测试每次运行30次,这是平均值:

awk  - 1.52s user 0.01s system 99% cpu 1.529 total
sed  - 0.89s user 0.00s system 99% cpu 0.900 total
perl - 0.59s user 0.00s system 98% cpu 0.600 total
tr   - 0.02s user 0.00s system 90% cpu 0.020 total

所有测试都按上述方式运行(cmd < infile),输出定向到/ dev / null。

答案 3 :(得分:1)

perl解决方案可能如下所示:

perl -pwe 'tr/ //d' input.txt > output.txt

您可以添加-i开关进行就地编辑。