J'ai un fichier texte comme celui-ci:
a
b
c
d
e
f
g
Comment puis-je regrouper ces lignes pour obtenir une sortie comme celle-ci:
a-b
b-c
c-d
d-e
e-f
f-g
Je dois le faire en shell (sh, csh, bash).
J'ai trouvé ceci:
cat file | xargs -n2
mais le dernier élément du premier groupe n'est pas devenu le premier du second.
shell
text-processing
Costel Balta-Coman
la source
la source
^ Cela fonctionnerait très bien, sauf que votre entrée est ponctuelle. Donc...
... fonctionnerait, mais c'est peut-être trop compliqué ...
la source
sed
faire seul.sed 1d\;\$d
le corriger.sed '2~2p' infile | paste -d- - -
paste -d- <(head -n -1 input) <(tail -n +2 input)
Un de plus
sed
et peut être modifié (grâce à mikeserv ):
la source
y/-\n/\n-/
pourrait remplacer les deux s /// peut-être. Si tel était le cas, ce serait plus rapide, portable pour l'utilisation \ n et plus court.Une version pure bash -
la source