Mam taki plik tekstowy:
a
b
c
d
e
f
g
Jak pogrupować te wiersze, aby uzyskać dane wyjściowe takie jak to:
a-b
b-c
c-d
d-e
e-f
f-g
Muszę to zrobić w powłoce (sh, csh, bash).
Znalazłem to:
cat file | xargs -n2
ale ostatni element pierwszej grupy nie stał się pierwszym z drugiego.
shell
text-processing
Costel Balta-Coman
źródło
źródło
^ To by działało naprawdę dobrze, z tym wyjątkiem, że twoje dane wejściowe byłyby wyłączone. Więc...
... działałoby, ale może jest zbyt skomplikowane ...
źródło
sed
sobie na to sam.sed 1d\;\$d
to poprawić.sed '2~2p' infile | paste -d- - -
paste -d- <(head -n -1 input) <(tail -n +2 input)
Jeszcze jeden
sed
i może być modyfikowany (dzięki mikeserv ):
źródło
y/-\n/\n-/
może zastąpić oba s /// może. Gdyby tak było, byłoby to szybsze, przenośne do użytku \ n i krótsze.Wersja czysto bashowa -
źródło