Tengo un archivo de texto que contiene esta línea:
set stime = '0 0'
Necesito cambiar eso para:
set stime = '0 4'
Intenté estos comandos:
sed -i 's/original/new/g' file.txt
y
awk '{gsub(/pattern/,"replacement")}' file
Pero no funcionan. Supongo que se debe al apóstrofe en el patrón. ¿Cómo puedo hacer esto correctamente?
command-line
text-processing
sed
awk
azul profundo
fuente
fuente
"
solía escapar de comillas simples, entonces ¿no puede sersed -i "s/4/1/g filename"
?4
en todo el archivo1
, que no es lo que se solicitó. Además, el nombre del archivo no debe estar entre comillas; hay dos argumentos: el patrón (entre comillas para que pueda contener espacios y puntuación); y el nombre de archivo (que también puede estar entre comillas por el mismo motivo).sed "s/some \"double quotes\"/some 'single quotes'/g" filename
Tienes algunas opciones:
Use comillas dobles en lugar de comillas simples para los comandos sed o awk:
o
Guarde el patrón en una variable de shell y use comillas dobles:
entonces
o
No uses todo el patrón. Simplemente encuentre la línea correcta y reemplace solo lo que necesita ser cambiado, evitando la cita. Por ejemplo, si solo tiene una aparición de
set stime
, puede hacer:o
fuente