Para aquellos que buscan eficiencia (muchos archivos para procesar o archivos enormes), usar el +
operador de repetición en lugar de*
hace que el comando sea más del doble de rápido.
Con GNU sed:
sed -Ei 's/[ \t]+$//' "$1"
sed -i 's/[ \t]\+$//' "$1" # The same without extended regex
También comparé rápidamente algo más: usar en [ \t]
lugar de [[:space:]]
también acelera significativamente el proceso (GNU sed v4.4):
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
mv
lugar decat
yrm
. ¿Por qué estás usandocat
así de todos modos? ¿Por qué no usarcp
?cat
para sobrescribir el archivo original en lugar demv
reemplazar realmente los datos en el archivo original (es decir, no romperá los vínculos físicos). Usarsed -i
como se propone en muchas soluciones no hará eso. OIA, sigue haciendo lo que estás haciendo.