2012-10-06 14 views
6

ho usato un comando grep con sed e tagliano i filtri che si trasforma in fondo la mia uscita a qualcosa di simile a questoShell Rimozione Spartiti/Spazi

this line 1 


    this line 2 


    another line 3 


    another line 4 

Sto cercando di ottenere un output senza gli spazi in mezzo le linee e davanti alle linee in modo che sembrerebbe

this line 1 
    this line 2 
    another line 3 
    another line 4 

Mi piacerebbe aggiungere un altro | filtrare

risposta

5

Aggiungi questo filtro per rimuovere spazi bianchi all'inizio della riga e rimuovere le righe vuote, si noti che utilizza due sed comandi, uno per rimuovere gli spazi restanti e un altro per eliminare le linee senza alcun contenuto

| sed -e 's/^\s*//' -e '/^$/d' 

C'è un esempio in the Wikipedia article for sed che usa il comando d per cancellare linee che sono vuote o che contengono solo spazi, la mia soluzione usa la sequenza di escape \s per corrispondere a qualsiasi carattere di spazio (spazio, tabulazione e così via), ecco l'esempio di Wikipedia :

sed -e '/^ *$/d' inputFileName 
  • Il punto di inserimento (^) corrisponde all'inizio della riga.
  • Il simbolo del dollaro ($) corrisponde alla fine della riga.
  • L'asterisco (*) corrisponde a zero o più occorrenze del carattere precedente.
+0

Questa è stata la prima risposta a lavorare per me dopo aver provato le risposte più in alto in questa lista. – k0pernikus

0
(whateverproducesthisoutput)|sed -E 's/^[[:space:]]+//'|grep -v '^$' 

(a seconda del vostro sed, è possibile sostituire con [[:space:]]\s).

3

Questo può essere eseguito anche con il comando tr. Come così

| tr -s [:space:]

o in alternativa

| tr -s \\n

se si desidera rimuovere le interruzioni di riga sola, senza i caratteri di spazio nella all'inizio di ogni riga.

+3

Il primo comando 'tr -s [: space:]' non lascerà uno spazio in bianco? - Comprime tutti tranne uno dei caratteri bianchi consecutivi. – amdn

+0

@amdn ha ragione, questo lascia uno spazio vuoto iniziale –

+0

+1 per un metodo semplice. qualche idea come posso mantenere i colori da egrep? – p1100i

2

È inoltre possibile utilizzare grep:

... | grep -o '[^$(printf '\t') ].*' 

Ecco il risultato della stampa le linee che hanno almeno un carattere che non è uno spazio bianco. Usando il flag "-o", stampiamo solo la corrispondenza e forziamo la corrispondenza a iniziare su un carattere non di spazio bianco.

MODIFICA: comando modificato in modo da poter rimuovere i caratteri iniziali dello spazio bianco.

Spero che questo aiuti =)

+0

Bello ... ma non rimuoverà gli spazi bianchi iniziali in linee non vuote. – amdn

+0

Sì, mi sono perso totalmente = = Speriamo che questa soluzione lo risolva –

+0

Nel mio sistema questo rimuove il carattere 't' invece del carattere di tabulazione – amdn

2

farei questo, breve e semplice:

sed 's: ::g' 

Aggiungere questo alla fine del tuo comando, e tutti gli spazi andrà puff.Ad esempio provate questo comando:

cat/proc/meminfo | sed 's: ::g' 
0

Usa grep "^." filename per rimuovere le righe vuote mentre printing.Here, le linee che iniziano con un carattere è abbinato in modo che le righe vuote vengono omessi.