Mam taki plik:
FirstName, FamilyName, Address, PhoneNumber
Jak mogę to posortować według FamilyName?
Mam taki plik:
FirstName, FamilyName, Address, PhoneNumber
Jak mogę to posortować według FamilyName?
Odpowiedzi:
Jeśli to jest UNIX:
sort -k 2 file.txt
Możesz użyć wielu -kflag do sortowania według więcej niż jednej kolumny. Na przykład, aby posortować według nazwiska, a następnie imienia jako rozstrzygający remis:
sort -k 2,2 -k 1,1 file.txt
Odpowiednie opcje z „sortowania według człowieka”:
-k, --key = POZ1 [, POZ2]
rozpocznij klucz na POS1, zakończ go na POS2 (początek 1)
POS to F [.C] [OPTS], gdzie F to numer pola, a C to pozycja znaku w polu. OPTS to jedna lub więcej jednoliterowych opcji kolejności, które zastępują globalne opcje kolejności dla tego klucza. Jeśli nie podano żadnego klucza, użyj całej linii jako klucza.
-t, --field-separator = WRZ
użyj SEP zamiast przejścia niepustego do pustego
--field-separator=','jeśli możesz mieć operator wprowadzania danych, wpisując wartości dla „Imię”, takie jak „Billy Bob” lub cokolwiek ... spacje mogą łatwo dostać się do danych, jeśli nie będziesz się przed nimi chronić, ale przecinki są stosunkowo mało prawdopodobne.
-bopcji. Dzieje się tak, ponieważ w sortrzeczywistości bierze się pod uwagę, że ciąg do sortowania zaczyna się tuż po przecinku, a nie od pierwszej litery kolumny. Ponadto może być konieczne poprzedzenie polecenia przedrostkiem LC_ALL=C, aby uniknąć efektów ubocznych wynikających z ustawień regionalnych, które mogą wystąpić nawet w przypadku prostego pliku ASCII.
-b( --ignore-leading-blanks). Aby trochę wyjaśnić: echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2daje a<SPACE><SPACE>bpierwszą (druga kolumna zaczyna się po pierwszej non-blank to blank transitioni <SPACE><SPACE>bjest przed <SPACE>a), ale wraz z -bnią daje aa<SPACE>azgodnie z oczekiwaniami ( ajest przed b).
sort -nk2 file.txt
W związku z tym możesz zmienić numer kolumny.