Nuestro team especializado pasados algunos días de investigación y recopilación de de datos, obtuvimos los datos necesarios, deseamos que te sea útil en tu plan.
Solución:
A sed
secuencia de comandos que solo reemplazará la primera aparición de “Apple” por “Banana”
Ejemplo
Input: Output:
Apple Banana
Apple Apple
Orange Orange
Apple Apple
Este es el script simple: Nota del editor: funciona con ÑUsed
solo.
sed '0,/Apple/s/Apple/Banana/' input_filename
Los dos primeros parámetros 0
y /Apple/
son el especificador de rango. El s/Apple/Banana/
es lo que se ejecuta dentro de ese rango. Entonces, en este caso “dentro del rango del principio (0
) hasta la primera instancia de Apple
, reemplazar Apple
con Banana
. Solo el primero Apple
será reemplazado.
Antecedentes: en tradicional sed
el especificador de rango también es “comenzar aquí” y “terminar aquí” (inclusive). Sin embargo, el “comienzo” más bajo es la primera línea (línea 1), y si el “final aquí” es una expresión regular, entonces solo se intenta hacer coincidir en la siguiente línea después de “comenzar”, por lo que el final más temprano posible es la línea 2. Por lo tanto, dado que el rango es inclusivo, el rango más pequeño posible es “2 líneas” y el rango de inicio más pequeño son las líneas 1 y 2 (es decir, si hay una ocurrencia en la línea 1, las ocurrencias en la línea 2 también se cambiarán, no deseado en este caso ). GNU
sed agrega su propia extensión de permitir especificar el inicio como el “pseudo” line 0
para que el final del rango pueda ser line 1
, lo que le permite un rango de “solo la primera línea” si la expresión regular coincide con la primera línea.
O una versión simplificada (un RE vacío como //
significa reutilizar el especificado antes, por lo que esto es equivalente):
sed '0,/Apple/s//Banana/' input_filename
Y las llaves son opcionales para el s
comando, por lo que esto también es equivalente:
sed '0,/Apple/s//Banana/' input_filename
Todos estos funcionan en GNU sed
solo.
También puede instalar GNU sed en OS X usando homebrew brew install gnu-sed
.
# sed script to change "foo" to "bar" only on the first occurrence
1x;s/^/first/;x;
1,/foo/x;/first/s///;x;s/foo/bar/;
#---end of script---
o, si lo prefiere: Nota del editor: funciona con ÑUsed
solo.
sed '0,/foo/s//bar/' file
Fuente
sed '0,/pattern/s/pattern/replacement/' filename
esto funcionó para mí.
ejemplo
sed '0,/
Nota del editor: ambos funcionan con ÑUsed
solo.
Aquí tienes las comentarios y valoraciones
Si piensas que ha sido provechoso este post, sería de mucha ayuda si lo compartieras con otros seniors de esta forma nos ayudas a dar difusión a esta información.