Sustituir la primera aparición de un patrón en una línea, para todas las líneas en un archivo con sed

Sustituir la primera aparición de un patrón en una línea, para todas las líneas en un archivo con sed

¿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. sedreemplaza solo la primera instancia en una línea de forma predeterminada (sin el /gmodificador), 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

información relacionada