mam ten plikJak sortować grupy linii?
rs1 1 ADD 0.7 0.75 0.45
rs1 1 VAR 0.4 4.53 0.06
rs1 1 USER NA 1.96 0.37
rs2 2 ADD 1.5 0.25 0.23
rs2 2 VAR 0.4 4.86 0.03
rs2 2 USER NA 1.73 0.05
rs3 3 ADD 0.29 0.76 0.97
rs3 3 VAR 0.44 3.95 0.09
rs3 3 USER 0.96 5.41 0.01
dla każdej wartości w $1
istnieją trzy linie z ADD
, VAR
, USER
w $3
. Chcę sortować (odwrócić sortowanie) plik na podstawie wartości $6
dla linii z USER
w $3
. Pytanie brzmi, jak mógłbym to zrobić ORAZ jednocześnie zachowując odpowiednie linie z ADD
, VAR
obok posortowanych linii. Nie potrzebuję sortować pozostałych dwóch linii; Po prostu potrzebuję ich obok linii sorted
.
Pożądany wyjściowa:
rs3 3 ADD 0.29 0.76 0.97
rs3 3 VAR 0.44 3.95 0.09
rs3 3 USER 0.96 5.41 0.01
rs2 2 ADD 1.5 0.25 0.23
rs2 2 VAR 0.4 4.86 0.03
rs2 2 USER NA 1.73 0.05
rs1 1 ADD 0.7 0.75 0.45
rs1 1 VAR 0.4 4.53 0.06
rs1 1 USER NA 1.96 0.37
Próbowałem ten kod, ale to tylko sortuje oparte na wartościach $6
w USER
linii:
cat File | sort -k1 | uniq | sort -g -k6 > Output
Dziękuję
+1 dla dobrze sformatowanego pytania z przykładowymi danymi, wymaganą wydajnością i ... sondą, ... przykładowym kodem; -). Możesz określić wiele kluczy do sortowania. '-k2 -k3 -k6' może działać. Powodzenia. – shellter
Spójrz na ten przykład, to jest na tej samej linii Wierzę http://stackoverflow.com/questions/3832068/bash-sort-text-file-by-last-field-value – TopGunCoder
@shelter: Niestety, to chyba nie działa – user2162153