
Quería cambiar el nombre del archivo, agregando más detalles para poder obtener la respuesta a mi pregunta:
Tengo las siguientes líneas en crontab
00 * * * * /home/@@@@/ulimit_nofile_status_20480.sh >> /export/####/$$$$$/ulimit_nofile_status.txt
00 * * * * /home/@@@@/ulimit_nproc_status_20480.sh >> /export/####/%%%%/ulimit_nproc_status.txt
Quiero cambiar los nombres de los archivos ulimit_nofile_status_20480.sh
y ulimit_nproc_status_20480.sh
a ulimit_nofile_status_40960.sh
y ulimit_nproc_status_40960.sh
respectivamente.
En otras palabras, quiero cambiar el nombre de 20480 a 40960.
Probé los siguientes comandos, pero no funcionaron para mí.
crontab -l | sed 's#/_20480\.#/40960.#' | crontab -
crontab -l | sed 's/\<_20480\>/40960/' | crontab -
"sed -i s//40960/" crontab -e
Respuesta1
Tus expresiones regulares son una locura. Lo siguiente debería funcionar.
crontab -l | sed 's#_20480\.#_40960.#' | crontab -
Su intento requirió que hubiera una barra antes del guión bajo, pero, por supuesto, no hay ninguna en su crontab
archivo, por lo que la expresión regular no coincidía con nada.
Dice que desea reemplazar 20480
con 40960
, pero en varios de sus intentos parece que también desea eliminar el guión bajo antes del número. Si eso es correcto, obviamente elimínelo de la cadena de reemplazo.
Supongo que sed
no reconoces \<
lo que de otro modo habría sido un buen intento.
El último de tus intentos está tan alejado de cualquier sintaxis válida que no creo que pueda comentarlo de manera significativa. Se analiza como si intentara utilizar la cadena sed -i s//40960/
como nombre de un comando, con los argumentos crontab
y -l
pasándole como parámetros.