Come posso abbinare gli spazi bianchi in sed? Nei miei dati voglio abbinare tutti i 3+ caratteri successivi (spazio tabulazione) e sostituirli con 2 spazi. Come si può fare?
Come posso abbinare gli spazi bianchi in sed? Nei miei dati voglio abbinare tutti i 3+ caratteri successivi (spazio tabulazione) e sostituirli con 2 spazi. Come si può fare?
Risposte:
La classe di caratteri \scorrisponderà ai caratteri degli spazi bianchi <tab>e <space>.
Per esempio:
$ sed -e "s/\s\{3,\}/ /g" inputFile
sostituirà ogni sequenza di almeno 3 spazi bianchi con due spazi.
NOTA : per la conformità POSIX, utilizzare la classe di caratteri [[:space:]]anziché \s, poiché quest'ultima è un'estensione GNU sed. Vedere le specifiche POSIX per sed e BRE
sedho dovuto usare [[:space:]]perché \snon ha funzionato per me. Forse \sè un'estensione GNU sed ?
[[:space:]uno si potrebbe usare [[:blank:]]che corrisponde solo a schede e spazi orizzontali (ma nessuna nuova riga, scheda verticale ecc.).
Funziona su MacOS 10.8:
sed -E "s/[[:space:]]+/ /g"
sed "s/[[:space:]]\+/ /g"abbinare uno o più spazi.
-Ebandiera.
Alcune versioni precedenti di sed potrebbero non riconoscere \ s come token di corrispondenza degli spazi bianchi. In tal caso è possibile abbinare una sequenza di uno o più spazi e schede con '[XZ] [XZ] *' dove X è uno spazio e Z è una scheda.
sed 's/[ \t]*/"space or tab"/'
sedqualsiasi sistema? Altrimenti potrebbe valere la pena menzionare dove questo funziona in modo simile alle altre risposte, solo così conosciamo i limiti e dove questo potrebbe non avere il risultato desiderato.