Tengo un archivo r. Quiero reemplazar las palabras File y MINvac.pdb en ella con nada. Los comandos que se utilizan son

sed -i 's/File//g' /home/kanika/standard_minimizer_prosee/r

y

sed -i 's/MINvac.pdb//g' /home/kanika/standard_minimizer_prosee/r

Quiero combinar ambos sed comandos en uno, pero no sé el camino. Alguien puede ayudar?

El archivo tiene este aspecto:

-6174.27    File10MINvac.pdb
-514.451    File11MINvac.pdb
4065.68     File12MINvac.pdb
-4708.64    File13MINvac.pdb
6674.54     File14MINvac.pdb
8563.58     File15MINvac.pdb
InformationsquelleAutor kanika | 2011-10-05

2 Comentarios

  1. 59

    sed es un lenguaje de secuencias de comandos. Usted comandos separados con punto y coma o salto de línea. Muchos sed dialectos también permitir pasar a cada uno de los comandos por separado como una -e argumento de opción.

    sed -i 's/File//g;s/MINvac\.pdb//g' /home/kanika/standard_minimizer_prosee/r
    

    También he añadido una barra diagonal inversa para cotizar el literal punto antes de pdb, pero en este contexto limitado que es probablemente poco importante.

    Para la integridad, aquí está la nueva línea de la variante. Muchos de los recién llegados están desconcertados que el shell permite literal saltos de línea en las cadenas entre comillas, pero puede ser conveniente.

    sed -i 's/File//g
        s/MINvac\.pdb//g' /home/kanika/standard_minimizer_prosee/r
    

    De curso, en este caso, también se podría combinar todo en un regex:

    sed -i 's/\(File\|MINvac\.pdb\)//g' /home/kanika/standard_minimizer_prosee/r
    

    (Algunos sed dialectos se desea que esta sin barras diagonales inversas, y/o ofrecer una opción para utilizar expresiones regulares extendidas, donde deben ser omitidos. BSD sed, y por lo tanto también MacOS sed, exige un argumento obligatorio para sed -i que sin embargo puede ser vacío, como sed -i ''.)

    • gracias..Esto funcionó muy bien..
    • Gracias por la sugerencia sobre el uso múltiple e indicadores, uno para cada declaración en la secuencia de comandos. Tener un indicador-e para que el ‘yo’ comando es una buena manera de asegurarse de que el ‘yo’ comando finaliza cuando se escribe un oneliner sed de secuencia de comandos.
    • Tangencialmente véase también stackoverflow.com/questions/35253663/…, que se extiende de este a la manipulación de una lista de sustitución de pares.
  2. 27

    Utilizar el -e bandera:

    sed -i -e 's/File//g' -e 's/MINvac.pdb//g' /home/kanika/standard_minimizer_prosee/r
    

    Una vez que usted consiga más comandos que son convenientes para definir con -es, es mejor almacenar los comandos en un archivo independiente y se incluyen con el -f bandera.

    En este caso, tendría que hacer un archivo que contiene:

    s/File//g
    s/MINvac.pdb//g
    

    Vamos a llamar a ese archivo ‘sedcommands’. A continuación, se utilizaría con sed como este:

    sed -i -f sedcommands /home/kanika/standard_minimizer_prosee/r
    

    Con sólo dos comandos, probablemente no vale la pena utilizar un archivo independiente de comandos, pero es muy conveniente si usted tiene un montón de transformaciones a realizar.

    • whatis la idead detrás -f de la bandera?
    • Ciertamente que él trató de explicar. Con -f usted puede poner el script en un archivo en lugar de en el sed de la línea de comandos. (En este caso, es probable que no sea muy útil, sin embargo.)

Dejar respuesta

Please enter your comment!
Please enter your name here