Eu tenho um arquivo de texto como este:
a
b
c
d
e
f
g
Como posso agrupar essas linhas para obter uma saída como esta:
a-b
b-c
c-d
d-e
e-f
f-g
Eu tenho que fazer isso no shell (sh, csh, bash).
Eu encontrei isto:
cat file | xargs -n2
mas o último elemento do primeiro grupo não se tornou o primeiro do segundo.
shell
text-processing
Costel Balta-Coman
fonte
fonte
^ Isso funcionaria muito bem, exceto que sua entrada é individual. Assim...
... funcionaria, mas talvez seja muito complicado ...
fonte
sed
isso sozinho.sed 1d\;\$d
corrigi-lo.sed '2~2p' infile | paste -d- - -
paste -d- <(head -n -1 input) <(tail -n +2 input)
Mais um
sed
e pode ser modificado (graças a mikeserv ):
fonte
y/-\n/\n-/
poderia substituir ambos s /// talvez. Se o fizesse, seria mais rápido, portátil para o uso e mais curto.Uma versão pura do bash -
fonte