Solución:
sed -i '' 's/ :(float)//g' *
sed -i '' 's/[chuck]: cleaning up...//g' *
Explicación:
yo puede conseguir:
sed -ie 's/ :(float)//g' *
para trabajar, pero eso crea archivos que mantienen los archivos antiguos.
Eso es porque i
sed
bandera 's se supone que funciona de esa manera
-i extension
Edit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved.
En este caso e
se interpreta como la extensión desea guardar las copias de seguridad con. Por lo tanto, se realizará una copia de seguridad de todos sus archivos originales con un e
adjunto a sus nombres.
Para proporcionar una extensión de longitud cero, debe usar -i ''
.
Nota: A diferencia de -i<your extension>
, -i''
no funcionará. Debe tener un carácter de espacio entre -i
y ''
para que funcione.
Extracción de los resultados -e bandera en un error patrón sustituto sin terminación.
Cuando se quita el e
inmediatamente después -i
, es decir
sed -i 's/ :(float)//g' *
s/ :(float)//g
ahora se interpretará como la extensión argumento para i
bandera.Y el primer archivo de la lista de archivos producidos por el desarrollo del forro de *
se interpreta como una sed function
(muy probablemente s/regular expression/replacement/flags
función) Puede verificar esto en la salida del
sedfn=$(echo * | cut -d' ' -f1); [[ ${sedfn:0:1} == "s" ]]; echo $?
Si la salida de la la cadena de comandos anterior es 0
, nuestra suposición es validada.
También en este caso, si de alguna manera el primer nombre de archivo califica como una función s/regular expression/replacement/flags
sed, los otros nombres de archivos se interpretarán como archivos regulares para que sed funcione.
¿Qué significa "crea archivos que mantienen los archivos antiguos"? –
Si tengo un archivo llamado abc. Elimina las líneas del archivo abc, pero crea un archivo llamado abce. –
La 'g' no es necesaria si el patrón solo aparece una vez por línea. –