Pergunta mais ou menos diz tudo. Estou ciente de que /^$/d
removerá todas as linhas em branco, mas não consigo ver como dizer 'substituir duas ou mais linhas em branco por uma única linha em branco'
Alguma ideia?
Pergunta mais ou menos diz tudo. Estou ciente de que /^$/d
removerá todas as linhas em branco, mas não consigo ver como dizer 'substituir duas ou mais linhas em branco por uma única linha em branco'
Alguma ideia?
Respostas:
Se você não estiver disparando o vim ou sed para outro uso, o gato realmente tem uma maneira fácil de recolher várias linhas em branco, basta usar cat -s
.
Se você já estava no vim e queria ficar lá, você pode fazer isso com a pesquisa interna e substituí-lo, emitindo: :%s!\n\n\n\+!^M^M!g
(O ^ M é a representação visual de uma nova linha, você pode inseri-la pressionando Ctrl+ vEnter) ou salve a opção digitando por apenas descascar para fora para gato: :%!cat -s
.
:%!cat -s
. Aprenda algo GNnew todos os dias!
%s!\n\n\n\+!\r\r!g
Use \n
para indicar uma nova linha no padrão de pesquisa. Use Ctrl+ Mno texto de substituição ou em uma referência anterior. Veja :help pattern
e :help sub-replace-special
(linkado de :help :s
).
%s/\(\n\n\)\n\+/\1/
\n
não funciona no texto de substituição.
Se no Vim, faça o seguinte:
:%!cat -s
man
página.
Usando Perl:
perl -00 -pe ''
-00
A opção de linha de comando ativa o modo slurp de parágrafo, o que significa que Perl lê texto parágrafo por parágrafo, em vez de linha por linha.
Com 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
Eu sei que esse é um código bobo, mas eu queria resolver esse problema em menos de 10 minutos e funcionou
for file in /directory/*
do
originalname=$file
us='_'
tempname=$file$us
echo $originalname
mv $originalname $tempname
uniq $tempname $originalname
rm $tempname
done
uniq
remove as linhas iguais adjacentes. O que não é o que o OP quer.
-s
opção do gato - apenas uma nota histórica, não está no POSIX, mas parece estar disponível no BSD e no GNU cat.