Archivo1:

<a>hello</b> <c>foo</d>
<a>world</b> <c>bar</d>

Es un ejemplo del archivo que esto iba a funcionar en. ¿Cómo se puede quitar todas las cadenas que tienen un <c>*</d> el uso de sed?

  • ¿Qué significa «quitar todas las cuerdas»? ¿Te refieres a quitar que toda la línea, o simplemente que el bloque de texto?
  • Todas las cadenas que comienzan con <c> y terminando con </d>. El comando de abajo funcionó a la perfección. Cualquier persona que utilice el comando también, obviamente, debe agregar el archivo al final del comando.
InformationsquelleAutor user191960 | 2009-10-20

3 Comentarios

  1. 4

    La siguiente línea va a quitar todo el texto de la <c> a </d> inclusiva:

    sed -e 's/<c>.*<\/d>//'
    

    Los bits dentro de la s/...// es una expresión regular, no es realmente un comodín en la misma manera como el shell utiliza, así que cualquier cosa que usted puede poner en una expresión regular puede poner ahí.

    • Funciona a la perfección! Recordar a los usuarios de este comando para agregar la entrada/salida de archivos a fin de redirigir la sed: sed-e ‘s/<c>.*<\/d>//’ En > Out.
  2. 0

    si todos tus datos es igual a la del ejemplo

    # gawk 'BEGIN{FS=" <c>"}{print $1}' file
    <a>hello</b>
    <a>world</b>
    
  3. 0

    Gran Swiss Army knife!

    La he modificado para tirar de la cabecera de información de correos electrónicos para el archivo de secuencia de comandos. Se trataba de cambiar el nombre de los mensajes de correo con IMAP tanto la fecha y la información del remitente (de lo contrario IMAP sólo numeradas 1, 2, 3, etc.). He aquí los dos mods:

    for i in $mailarray; do date -d $(less -f $i | grep -im 1 "Date:\ " | sed -e 's_^.*\(ate: \)__') +%F_%T%Z; done

    for i in $mailarray; do less -f "$i" | grep -iEm 1 "From:\ " | sed -e 's_^.*\(rom\).*<\|^.*\(rom:\).__' | sed -e '[email protected]*$__'; done

    Que salvó a una gran cantidad de extraños codificación. Gracias.

Dejar respuesta

Please enter your comment!
Please enter your name here