linux - examples - Reemplazo del personaje de control en sed
sed command examples (5)
Necesito reemplazar todas las apariciones del carácter de control CTRL + A (SOH / ascii 1) en un archivo de texto en Linux, ¿cómo se puede lograr esto en SED?
¿Con qué quieres reemplazarlos? Si el reemplazo es un solo carácter, tr
es una mejor opción que sed
. Para reemplazar con la letra ''a'':
tr ''/1'' a < input-file > tmp && mv tmp input-file
Al "reemplazar", asumo que desea cambiar el archivo ''en el lugar''.
Usando GNU sed:
# Create a file with a single control character (SOH)
echo -e "/x01" > file
# Change SOH control characters to the literal string "SOH"
sed -i ''s//x01/SOH/g'' file
# Check result
cat file
da...
SOH
La opción -i
no funciona en OS X sed, por lo que tendría que solucionarlo colocando un archivo temporal.
Esto se puede hacer a través de cat
con la opción -v
(equivalentemente --show-nonprinting
opciones y canalizando esto a sed
).
Si el carácter de control es el carácter de inicio de encabezado (SOH) (CTRL + A / ASCII 1) y queremos reemplazarlo con una pestaña, haremos lo siguiente:
cat -v file | sed ''s//^A//t/g'' > out
cat -v
reemplazaría el carácter SOH con ^ A, que luego se emparejaría y reemplazaría en sed
.
Puedes usar el comando tr
tr -s ''/ 001'' ''|'' archivo nuevo
tr -s "palabra o delimitador" desea reemplazarlo con "palabra o delimitador" newfile
Tratar:
sed ''s/^A/foo/g'' file
Use Ctrl + V + A para crear la secuencia ^A
en el comando anterior.