GNU/Linux >> Linux Esercitazione >  >> Linux

Sed One-liner per eliminare tutto tra un paio di parentesi?

Sto lavorando con del testo pieno di cose tra parentesi [] che non voglio. Dal momento che posso eliminare le parentesi da solo, non ho bisogno di una riga per farlo per me, ma ho bisogno di una riga che rimuoverà tutto ciò che c'è tra di loro.

Che dire delle parentesi () invece delle parentesi?

Risposta accettata:

Sostituisci [some text] dalla stringa vuota. Supponendo che tu non voglia analizzare le parentesi nidificate, il some text non può contenere parentesi.

sed -e 's/[[^][]*]//g'

Nota che nell'espressione tra parentesi [^][] per corrispondere a qualsiasi cosa tranne [ o ] , il ] deve venire prima. Normalmente un ] terminerebbe il set di caratteri, ma se è il primo carattere del set (qui, dopo il ^ carattere di complemento), il ] rappresenta se stesso.

Se vuoi analizzare le parentesi nidificate o se il testo tra parentesi può estendersi su più righe, sed non è lo strumento giusto.


Linux
  1. Utilizzo di Sed per cercare e sostituire una linea tra intervalli di pattern

  2. Linux:tutto è un file?

  3. Estrarre il valore tra due modelli di ricerca sulla stessa riga?

  4. Sed:eliminare tutte le occorrenze di una stringa tranne la prima?

  5. Come eliminare le prime N righe di un file Ascii utilizzando i comandi della shell?

Come eliminare le righe vuote nei file utilizzando Grep, Sed e Awk

Fuggire da Blackslash a Sed?

Differenze tra Sed su Mac Osx e altri Sed "standard"?

Esercitazione Unix Sed:Elimina le righe di file utilizzando l'indirizzo e i modelli

Elimina gli spazi bianchi all'inizio di ogni riga del file, usando bash

Come eliminare i file creati tra due volte?