![Sustituir la primera aparición de un patrón en una línea, para todas las líneas en un archivo con sed](https://rvso.com/image/22256/Sustituir%20la%20primera%20aparici%C3%B3n%20de%20un%20patr%C3%B3n%20en%20una%20l%C3%ADnea%2C%20para%20todas%20las%20l%C3%ADneas%20en%20un%20archivo%20con%20sed.png)
¿Es posible hacerlo en una sola línea?
Tengo una salida como esta:
"First line" - Description
" Second line" - Description
"Third line" - Description
" Fourth line" - Description
Esta entrada se genera automáticamente.
Quiero reemplazar la primera aparición de "
(comillas + espacio) con "
(comillas) para cada línea. Si aplico la sustitución globalmente, también cambiará cada aparición de line" -
to line"-
, por lo que me preguntaba si es posible usar una línea sed one para lograr esto.
He intentado usar ^
así
sed -r ':a;N;$!ba;s/(\^\" )/\"/g'
Pero no funciona, no reemplaza nada. Lo intenté
sed -r ':a;N;$!ba;s/(^|\" )/\"/g'
y reemplaza todas las ocurrencias. Recién comencé a usar sed, así que realmente no sé si estoy haciendo algo mal.
¿Que me estoy perdiendo aqui?
Respuesta1
Lo estás pensando demasiado. sed
reemplaza solo la primera instancia en una línea de forma predeterminada (sin el /g
modificador), aunque aún desea anclar porque no desea tanto la primera instancia en la línea como la que está al inicio de la línea; y normalmente no necesitas las acciones de línea explícitas que intentas utilizar (¿por qué?).
sed 's/^" /"/'
Respuesta2
Una respuesta más general, ya que no puedo comentar sobre la respuesta del geekosaur: no pondrías el ^ (ancla de inicio de línea). Por ejemplo, si desea reemplazar la primera aparición de A con B, tendría
sed 's/A/B/'
Respuesta3
Usandoperla
~$ perl -pe 's/^" /"/;' file
Usandorakú(anteriormente conocido como Perl_6)
~$ raku -pe 's/^\" \s /"/;' file
Entrada de muestra:
"First line" - Description
" Second line" - Description
"Third line" - Description
" Fourth line" - Description
Salida de muestra (ambos ejemplos de código):
"First line" - Description
"Second line" - Description
"Third line" - Description
"Fourth line" - Description
https://perldoc.perl.org/perlre
https://perldoc.perl.org/perltrap#Sed-Traps
https://docs.raku.org/language/regexes