Aquí es un ejemplo de archivo:

somestuff...
all: thing otherthing
some other stuff

Lo que quiero hacer es agregar a la línea que comienza con all: como este:

somestuff...
all: thing otherthing anotherthing
some other stuff
InformationsquelleAutor yasar | 2012-03-06

6 Comentarios

  1. 158

    Esto funciona para mí

    sed '/^all:/s/$/anotherthing/' file

    La primera parte es un patrón de encontrar y la segunda parte es una simple sed de sustitución utilizando $ para el final de una línea.

    Si desea cambiar el archivo durante el proceso, el uso de -i opción

    sed -i '/^all:/s/$/anotherthing/' file

    O usted puede redirigir a otro archivo

    sed '/^all:/s/$/anotherthing/' file > output
    • Sólo añadir algo nos conduce a una nueva línea, reemplazar es el camino correcto.
  2. 9

    Esto debería funcionar para usted

    sed -e 's_^all: .*_& anotherthing_'

    El uso de s de comando (suplente) puede buscar una línea que satisface una expresión regular. En el comando anterior, & representa la cadena coincidente.

    • Sólo este comando funciona con Python Tela de la sed(). Gracias.
  3. 7

    Usted puede añadir el texto a $0 en awk si coincide con la condición:

    awk '/^all:/{$0=$0" anotherthing"} 1' file

    Explicación

    • /patt/{...} si la línea coincide con el patrón dado por patt, a continuación, realice las acciones descritas en {}.
    • En este caso: /^all:/{$0=$0" anotherthing"} si la línea comienza (representado por ^) con all:, a continuación, agregar anotherthing a la línea.
    • 1 como una verdadera condición, desencadena la acción predeterminada de awk: impresión de la línea actual (print $0). Esto sucederá siempre, por lo que se va a imprimir la línea original o el modificado uno.

    De prueba

    Para su entrada dada devuelve:

    somestuff...
    all: thing otherthing anotherthing
    some other stuff

    Nota también se puede proporcionar el texto para anexar en una variable:

    $ awk -v mytext=" EXTRA TEXT" '/^all:/{$0=$0mytext} 1' file
    somestuff...
    all: thing otherthing EXTRA TEXT
    some other stuff
    • En Solaris obtendrá el error: awk: can't set $0
    • a continuación, puede utilizar /usr/xpg4/bin/awk que es la «buena» awk.
  4. 3

    Solución con awk:

    awk '{if ($1 ~ /^all/) print $0, "anotherthing"; else print $0}' file

    Simplemente: si la fila comienza con all imprimir la fila plus «anotherthing», de lo contrario imprimir solo la fila.

    • Puedes acotar que: awk '$1=="all:" {$(NF+1)="anotherthing"} 1'
    • ¿cuál es el propósito de la última ‘1’?
    • un guión awk se compone de condition {actions} pares. Si el condition se omite, las acciones se realizan para cada registro. Si el {actions} se omite, y la condición se evalúa a true (que es el caso para el número 1), a continuación, la acción predeterminada es para imprimir el registro actual.
  5. 3

    Aquí hay otra solución simple de usar sed.

    $ sed -i 's/all.*/& anotherthing/g' filename.txt

    Explicación:

    todos.* significa que todas las líneas se inició con ‘todos’.

    & representar al partido (es decir, la línea completa que comienza con ‘todos’)

    a continuación, sed reemplazar a la antigua con la posterior y se anexa el ‘anotherthing’ palabra

Dejar respuesta

Please enter your comment!
Please enter your name here