我有一个矩阵(5800行和350列)的数字。每个单元格都是
0 / 0
1 / 1
2 / 2
删除每个单元格中所有空格的最快方法是:
0/0
1/1
2/2
Sed,R,任何最快的事情。
答案 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
开关进行就地编辑。