per chi cerca l'efficienza (molti file da elaborare, o file di grandi dimensioni), utilizzando l'operatore +
ripetizione anziché *
rende il comando di più di due volte più veloce.
Con GNU sed:
sed -Ei 's/[ \t]+$//' "$1"
sed -i 's/[ \t]\+$//' "$1" # The same without extended regex
Ho anche subito benchmark qualcos'altro: usando al posto del [ \t]
[[:space:]]
anche accelera in modo significativo il processo (GNU v4.4 sed):
sed -Ei 's/[ \t]+$//' "$1"
real 0m0,335s
user 0m0,133s
sys 0m0,193s
sed -Ei 's/[[:space:]]+$//' "$1"
real 0m0,838s
user 0m0,630s
sys 0m0,207s
sed -Ei 's/[ \t]*$//' "$1"
real 0m0,882s
user 0m0,657s
sys 0m0,227s
sed -Ei 's/[[:space:]]*$//' "$1"
real 0m1,711s
user 0m1,423s
sys 0m0,283s
È possibile utilizzare 'mv' invece di' cat' e 'rm'. Perché stai usando 'cat' in quel modo comunque? Perché non usare 'cp'? –
Ho usato la conoscenza che ho imparato da questa domanda per creare [uno script di shell per la rimozione in modo ricorsivo spazio bianco in coda] (https://gist.github.com/dtuite/6314519). –
La tua soluzione è effettivamente migliore quando usi MinGW a causa di un bug in sed su Windows: http://stackoverflow.com/questions/14313318/permission-denied-when-sed-in-place-edit-in-mingw –