¿Cómo puedo buscar una cadena específica en un archivo hasta una línea en blanco y pegarla en la primera línea de otro archivo?
He intentado
sed -n '/- name: string/,/^$/p' dire1/main.yml >> dire2/README.md
Esto no agrega nada, también quiero agregarlo a la primera línea de dire2/readme.md
si readme.md
aún no incluye - name: string
en la primera línea para no obtener duplicados.
Por ejemplo, si un archivo incluye
- name: primer paso
uses: mensaje
Quiero que se incluya en la primera línea del readme.md
. Pero si readme.md
ya tiene esto en la primera línea, no se debe agregar.
Otro ejemplo
El archivo es un archivo más largo.
name: build
otra línea aquí
otra línea más
- name: título aquí
otra línea
otra línea
- name: otro título
más líneas aquí
más líneas
- name: tercer título
más líneas
más líneas
En este ejemplo, quiero que se llene el archivo readme.md
con
name: título aquí
otra línea
otra línea
o cualquiera de los otros párrafos que comiencen con - name
y terminen en una línea en blanco.
Todo esto debe buscarse desde un solo archivo y agregarse al comienzo del archivo readme
si aún no existe.
Gracias por cualquier ayuda.
davy.ai
Para lograr esto, primero debemos verificar si el patrón
- name: string
existe en la primera línea del archivo README.md. Si no existe, entonces necesitamos extraer la primera aparición del patrón- name: string
seguido de cualquier línea hasta la siguiente línea en blanco del archivo dire1/main.yml usando el comando sed proporcionado. Finalmente, necesitamos agregar el contenido extraído a la primera línea del archivo README.md.Podemos usar el siguiente script de bash para lograr esto:
Aquí, el comando
grep
con la opción-q
verifica si el patrón- name: string
existe en la primera línea del archivo README.md. Si lo hace, entonces no imprime nada y devuelve un estado de salida de 0 (éxito), que podemos utilizar en la condiciónif
.Si el patrón no existe, entonces usamos el comando sed proporcionado para extraer el contenido del archivo dire1/main.yml y transformar la primera línea agregando un carácter
-
. Finalmente, el contenido extraído se agrega a la primera línea del archivo README.md usando el operador>>
.Tenga en cuenta que debe reemplazar
string
con el nombre real del patrón que está buscando en su archivo.