我有一個矩陣(5800行和350列)的數字。每個單元要麼是從矩陣中的單元格中刪除空格
0/0
1/1
2/2
什麼是刪除所有空格在每個單元中,有最快的方法:
0/0
1/1
2/2
桑達,R,任何將最快做到這一點。
我有一個矩陣(5800行和350列)的數字。每個單元要麼是從矩陣中的單元格中刪除空格
0/0
1/1
2/2
什麼是刪除所有空格在每個單元中,有最快的方法:
0/0
1/1
2/2
桑達,R,任何將最快做到這一點。
如果你想提高效率,你應該使用的coreutils TR對於這樣一個簡單的任務:
tr -d ' ' < infile
我比較反對300K文件中公佈答案,使用GNU AWK,GNU sed的,PERL v5.14.2和GNU coreutils v8.13。這些測試是每次運行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的輸出。
由於我知道如何在R和SED中執行此操作,因此此答案獲勝,因爲它顯示的是最快的。謝謝! – cianius
這裏是一個awk
替代,做同樣的事情:
awk '{gsub(" ",""); print}' input.txt > output.txt
說明:
awk '{...}'
:調用AWK,然後爲每個行做括在大括號的東西。gsub(" ","");
:用空字符串替換所有空格字符(單行或多行)。print
:打印整個線input.txt
:指定輸入文件作爲參數傳遞給awk的> output.txt
:輸出重定向到文件中。一個Perl的解決辦法是這樣的:
perl -pwe 'tr/ //d' input.txt > output.txt
您可以添加-i
轉行做就地編輯。
也許你應該多描述一下你的輸入。矩陣?在什麼?爲什麼不只是說「我有一個文本文件」,如果那是你的? – TLP
由於您沒有提供有關輸入文件格式或所需輸出的足夠信息,因此您會得到大量無用的解決方案。至少告訴我們用什麼字符分隔矩陣中的單元格。 –
是的,它是一個文本文件,但我說矩陣(逗號分隔),因爲它更準確地描述它不是它。 – cianius