La domanda più o meno dice tutto. Sono consapevole che /^$/drimuoverà tutte le righe vuote, ma non riesco a vedere come dire "sostituisci due o più righe vuote con una singola riga vuota"
Qualche idea?
La domanda più o meno dice tutto. Sono consapevole che /^$/drimuoverà tutte le righe vuote, ma non riesco a vedere come dire "sostituisci due o più righe vuote con una singola riga vuota"
Qualche idea?
Risposte:
Se non stai sparando vim o sed per qualche altro uso, cat ha in realtà un modo semplice per comprimere più righe vuote, basta usare cat -s.
Se eri già in vim e volessi rimanere lì, potresti farlo con la ricerca interna e sostituirlo emettendo: :%s!\n\n\n\+!^M^M!g(La ^ M è la rappresentazione visiva di una nuova riga, puoi accedervi premendo Ctrl+ vEnter), o salvando te stesso il digitando semplicemente sborsare al gatto: :%!cat -s.
:%!cat -s. Scopri qualcosa di nuovo ogni giorno!
%s!\n\n\n\+!\r\r!g
Utilizzare \nper indicare una nuova riga nel modello di ricerca. Usa Ctrl+ Mnel testo sostitutivo o un riferimento indietro. Vedi :help patterne :help sub-replace-special(collegato da :help :s).
%s/\(\n\n\)\n\+/\1/
\nnon funziona nel testo sostitutivo.
Se in Vim, basta fare questo:
:%!cat -s
manpagina.
Utilizzando Perl:
perl -00 -pe ''
-00 l'opzione della riga di comando attiva la modalità slurp del paragrafo, il che significa che Perl legge il testo paragrafo per paragrafo anziché riga per riga.
Con sed (GNU sed) 4.2.2:
sed -r '
/^\s*$/ {
# blank line
:NEXT
N # append next line to pattern space - if none, autoprint PS and exit
s/^\s*$\n^\s*$//g;t NEXT # if 2 blank lines, clear PS and loop to NEXT
}
# else, autoprint PS and next/exit
' < $MYFILE
So che questo è un codice sciocco, ma volevo risolvere questo problema in meno di 10 minuti e ha funzionato
for file in /directory/*
do
originalname=$file
us='_'
tempname=$file$us
echo $originalname
mv $originalname $tempname
uniq $tempname $originalname
rm $tempname
done
uniqrimuove le linee uguali adiacenti. Che non è quello che vuole OP.
-sopzione di cat - solo una nota storica, non è in POSIX, ma sembra essere disponibile in BSD e GNU cat.