Eu tenho um arquivo de texto, onde os registros são divididos em duas linhas. Eu gostaria de colocá-los em uma linha. Os registros são mais ou menos assim:
2013-07-29
apt-get install git
2013-07-29
apt-get install rsync
2013-07-31
apt-get install nmap
2013-08-02
apt-get install cifs-utils
2013-08-05
apt-get install telnet
Eu gostaria de obter o seguinte:
2013-07-29 apt-get install git
2013-07-29 apt-get install rsync
2013-07-31 apt-get install nmap
2013-08-02 apt-get install cifs-utils
2013-08-05 apt-get install telnet
Tentei com sed
, mas não consigo combinar duas linhas. Existe algum truque sed
ou existe alguma ferramenta melhor?
Responder1
sed 'N;s/\n/ /'
N
junta a próxima linha de entrada ao espaço padrãos/\n/ /
substitui a nova linha que separa as linhas por um espaço.
ou:
sed -n 'N;s/\n/ /;/regex/p'
-n
desativa a impressão automática do espaço padrão como último comando/regex/p
imprime linhas correspondentes a regex
Use o g
modificador para as substituições caso você esteja juntando mais de duas linhas, por exemplo N;N;N;s/\n/ /g
.
Responder2
Parece que as apt-get
linhas têm um espaço em branco anterior. Ditado:
sed -e :a -e '$!N;s/\n / /;ta' -e 'P;D' inputfile
deve produzir o resultado desejado.
Alternativamente, você também pode usar paste
:
paste -d' ' - - < inputfile