Sostituisci tutti gli spazi bianchi con virgole in un file di testo


10

Devo sostituire tutti gli spazi bianchi all'interno del mio testo con virgole. Attualmente sto usando questa linea ma non funziona: ottengo come output un file di testo esattamente uguale a quello originale:

sed 's/[:blank:]+/,/g' orig.txt > modified.txt

Grazie


sed 's / [[: blank:]] \ + /, / g'
mug896

@ mug896 ha funzionato per me su Ubuntu 18.04 Avevo bisogno delle parentesi quadre doppie e \ prima del +
dmontaner il

Risposte:


15

Con sed:

sed -e 's/\s\+/,/g' orig.txt > modified.txt

O con perl:

perl -pne 's/\s+/,/g' < orig.txt > modified.txt

Modifica: per escludere le nuove righe in perl, puoi usare un doppio negativo 's/[^\S\n]+/,/g'o una corrispondenza solo con gli spazi bianchi di tua scelta 's/[ \t\r\f]+/,/g'.


Grazie, comunque c'è ancora un problema: non voglio sostituire "righe successive \ n" con una virgola e il comando con perl lo sta attualmente eseguendo. Ha dato il comando che hai scritto, ancora non funziona.
aneuryzm,

Mi dispiace che tu debba fuggire +dall'operatore in sed, ho appena aggiornato la mia risposta. Le newline sono whitepsace in perl, quindi dovrai fare la tua classe whitepsace manualmente se non vuoi includerla. Ho aggiunto due soluzioni per questo come wel.
Caleb,

13

Utilizzando tr:

tr -s '[:blank:]' ',' <file

Ciò sostituirà qualsiasi spazio bianco orizzontale con una virgola. Qualsiasi spazio bianco ripetuto verrà sostituito solo con una virgola.


-1
awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 

Qui il nome del file è Server .. Contiene il contenuto seguente.

Server1
Server2
Server3

Se utilizziamo il comando precedente possiamo ottenere l'output di seguito.

Server1,Server2,Server3,


[mohramak@oc3246038448 Desktop]$ cat Servers
Server1
Server2
Server3
[mohramak@oc3246038448 Desktop]$ awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 
Server1,Server2,Server3,
[mohramak@oc3246038448 Desktop]$ 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.