Rimozione di un motivo dal file di testo


0

Ho un file pieno di questo genere di cose:

-POEM-
>> The big brown fox
>> jumps over the
>> lazy dog.
The end.

Voglio sbarazzarmi di "\ n & gt; & gt;" e basta trasformare questo in un oneliner:

-POEM-
The big brown fox jumps over the lazy dog.
The end.

Sto provando il seguente, che si rifiuta di lavorare:

perl -pe 's/\r?\n>>//g' task.tex
tr '\n\>\>' '' < task.tex 
sed -i ':a;N;$!ba;s/\n>>//g' task.tex 

Che cosa sto facendo di sbagliato?

Risposte:


1

Perché devi attraversare tanti problemi? Ecco cosa ho appena fatto con il tuo pezzo di testo.

  1. Apri il file in GEdit.

  2. Mantieni il cursore all'inizio della seconda riga

  3. Usa CTRL + H (Trova e sostituisci)

  4. Trova per >> e sostituire con SPACE

  5. Trova per \n e sostituire con SPACE

Assicurati di utilizzare SOSTITUISCI TUTTI in entrambi i casi (4 e 5).

Questo è quello che ho fatto e ha funzionato :)


Questo funzionerebbe bene. Non sei sicuro del motivo per cui dovresti complicare troppo questo compito.
Matthew Williams

0

Supponendo che il testo sia in un file chiamato x.txt:

tr -d '\n>>' < x.txt | sed -e 's/-POEM-/&\n/' -e 's/\./&\n/g'

0

Questo ha funzionato per me:

while read line; do
         line1=`echo $line`;
         if [ `echo $line1 | grep "^>" | wc -l` -eq 1 ];
         then
                 var1=`echo $line1 | sed 's/^...//'`;
                 line2=`echo $line2 $var1`;
         else
                 echo $line2;
                 echo $line1;
         fi;
done < task.tex

Non è necessario eseguire il fork di un nuovo processo di subshell solo per assegnare il contenuto di una variabile di shell a un'altra variabile di shell.
JdeBP

Grazie per aver allineato il codice .. per favore fatemi sapere un codice generico per fare il compito sopra citato !!! Poiché la risposta di Ketan è specifica per l'input.
Vipul
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.