Come sostituire le nuove righe con i caratteri di tabulazione?
Domanda
Ho un modello come sotto
hi
hello
hallo
greetings
salutations
no more hello for you
Sto cercando di sostituire tutte le nuove righe con la scheda usando il seguente comando
sed -e "s_/\n_/\t_g"
ma non funziona.
Qualcuno potrebbe aiutarmi, per favore? Sto cercando una soluzione in sed / awk.
Soluzione
non sono sicuro dell'output desiderato
# awk -vRS="\n" -vORS="\t" '1' file
hi hello hallo greetings salutations no more hello for you
Altri suggerimenti
Qui tr
è meglio, penso:
tr "\n" "\t" < newlines
Come suggerito da Nifle in un commento, newline
ecco il nome del file che contiene il testo originale.
Poiché sed
è così orientato alla linea, è più complicato da usare in un caso come questo.
sed '$!{:a;N;s/\n/\t/;ta}' file
Non è possibile sostituire le nuove righe riga per riga con sed
. Devi accumulare linee e sostituire le nuove linee tra tra loro
text abc\n <- can't replace this one
text abc\ntext def\n <- you can replace the one after "abc" but not the one at the end
Questo script sed
accumula tutte le righe ed elimina tutte le nuove righe tranne l'ultima:
sed -n '1{x;d};${H;x;s/\n/\t/g;p};{H}'
A proposito, il tuo sed
script sed -e " s _ / \ n _ / \ t_g "
sta cercando di dire " sostituisci tutte le barre seguite da nuove righe con barre seguite da schede " ;. I caratteri di sottolineatura assumono il ruolo di delimitatori per il comando s
in modo che le barre possano essere più facilmente utilizzate come caratteri per la ricerca e la sostituzione.
paste -s
-s Concatena tutte le righe di ciascun file di input separato in ordine da riga di comando. Il carattere newline di ogni riga tranne l'ultima riga in ogni file di input viene sostituita con carattere di tabulazione, se non diversamente specificato dall'opzione -d.
Sei quasi arrivato con il tuo script sed, dovresti solo cambiarlo in:
sed -e "s/\n/\t/g"
Il \
è sufficiente per la fuga, non è necessario aggiungere _
E devi aggiungere /
prima di g
alla fine per far sapere a sed che questa è l'ultima parte dello script.