Czy istnieje narzędzie Linux lub polecenie Bash, które można użyć do sortowania rozdzielanych spacjami ciągów liczb?Sortowanie rozdzielanych spacją liczb za pomocą Linux/Bash
Odpowiedz
Oto prosty przykład, aby można było:
echo "81 4 6 12 3 0" | tr " " "\n" | sort -g
tr
przekłada przestrzenie wyznaczające numery, do powrotu karetki, bo sort używa karetki powraca jako ograniczniki (czyli jest do sortowania linie tekstu). Opcja -g
informuje sortowanie o "ogólną wartość liczbową".
man sort
w celu uzyskania dalszych informacji na temat sort
.
$ s=(one two three four)
$ sorted=$(printf "%s\n" ${s[@]}|sort)
$ echo $sorted
four one three two
Jest to wariacja na ghostdog74 męska odpowiedź, która jest zbyt duża, aby zmieścić się w komentarz. Wyświetla cyfry zamiast nazw liczb, a zarówno oryginalny ciąg, jak i wynik są w łańcuchach rozdzielanych spacjami (zamiast tablicy, która staje się łańcuchem rozdzielanym znakami nowej linii).
$ s="3 2 11 15 8"
$ sorted=$(echo $(printf "%s\n" $s | sort -n))
$ echo $sorted
2 3 8 11 15
$ echo "$sorted"
2 3 8 11 15
Jeśli nie używać echo
przy ustalaniu wartości sorted
, wówczas ciąg ma nowe linie w nim. W tym przypadku echo bez cudzysłowu umieszcza wszystko w jednym wierszu, ale, jak pokazuje echo z cytatami, każda liczba pojawiałaby się w osobnej linii. Jest tak w przypadku, gdy oryginał jest tablicą lub ciągiem znaków.
# demo
$ s="3 2 11 15 8"
$ sorted=$(printf "%s\n" $s | sort -n)
$ echo $sorted
2 3 8 11 15
$ echo "$sorted"
2
3
8
11
15
Korzystanie Bash interpretacji parametrów (aby zastąpić spacje z nowymi liniami) możemy zrobić:
str="3 2 11 15 8"
sort -n <<< "${str// /$'\n'}"
# alternative
NL=$'\n'
str="3 2 11 15 8"
sort -n <<< "${str// /${NL}}"
Jeśli rzeczywiście mają ciąg oddzielonych znakiem spacji numerów, a następnie jeden z pozostałych odpowiedzi udzielone będzie działać w porządku. Jeśli twoja lista jest tablicą bash, wówczas:
oldIFS="$IFS"
IFS=$'\n'
array=($(sort -g <<< "${array[*]}"))
IFS="$oldIFS"
może być lepszym rozwiązaniem. Ogranicznik nowej linii może pomóc, jeśli chcesz uogólnić sortowanie tablicy łańcuchów zamiast liczb.
Moja lista jest tablicą bash, ale to nie działa dla mnie: 'packages =" $ (sort <<< $ {! Package2apk [@]}) "' – Jayen
$ awk 'BEGIN{split(ARGV[1], numbers);for(i in numbers) {print numbers[i]} }' \
"6 7 4 1 2 3" | sort -n
Ten fragment kodu może być rozwiązaniem, [w tym wyjaśnienie] (// meta.stackexchange.com/questions/114762/explaining-entirely- code-based-answers) naprawdę pomaga poprawić jakość twojego posta.Pamiętaj, że odpowiadasz na pytanie przeznaczone dla czytelników w przyszłości, a te osoby mogą nie znać powodów sugestii dotyczących kodu. – yivi
Poprawa na Evan Krall ładnym Bash "array sort" przez ograniczenie zakresu IFS do jednego polecenia:
printf "%q\n" "${IFS}"
array=(3 2 11 15 8)
array=($(IFS=$'\n' sort -n <<< "${array[*]}"))
echo "${array[@]}"
printf "%q\n" "${IFS}"
Jest to odmiana od @JamesMorris odpowiedź:
echo "81 4 6 12 3 0" | xargs -n1 | sort -g | xargs
Zamiast tr
używam xargs -n1
do konwersji na nowe linie. Ostateczna wersja xargs
polega na konwersji z powrotem na oddzieloną spacjami sekwencję liczb.
- 1. Sortowanie liczb w formacie ciągów za pomocą Pythona
- 2. PHP - sortowanie tablic nazw plików za pomocą liczb?
- 3. Generowanie listy plików rozdzielanych przecinkami za pomocą Ant
- 4. Sortowanie plików za pomocą DirectoryIterator
- 5. Sortowanie danych za pomocą Eloquent
- 6. Rozpoznawanie liczb za pomocą gestów
- 7. Wyszukiwanie liczb za pomocą Zend_Search_Lucene
- 8. Sortowanie tablicę liczb punktowych obrocie
- 9. Jak odczytywać liczby oddzielone spacją za pomocą scanf
- 10. sortowanie za pomocą wielu kluczy za pomocą polecenia sortowania Linuksa
- 11. Sortowanie tablic zmiennych za pomocą klucza słownika
- 12. Sortowanie za pomocą funkcji porównanie funkcji
- 13. Sortowanie według daty za pomocą d3.js
- 14. Sortowanie na polach "przejściowych" za pomocą NSFetchedresultController
- 15. Sortowanie za pomocą wyszukiwania pełnotekstowego MongoDB
- 16. automatyczne sortowanie tabeli za pomocą sorttable.js
- 17. Sortowanie za pomocą pola wielowartościowego w Solr
- 18. Sortowanie XML za pomocą wartości atrybutu PHP
- 19. Sortowanie ciągów za pomocą Merge Sort
- 20. Sortowanie listy alfabetycznie za pomocą metody compareTo()
- 21. Suma liczb za pomocą rekurencji java
- 22. Ucinanie liczb zmiennoprzecinkowych za pomocą PHP
- 23. Zaokrąglanie liczb za pomocą bc w Bash
- 24. Formatowanie dużych liczb za pomocą .NET
- 25. vim: Wyrównywanie kolumny spacją
- 26. JavaScript zastępuje znak spacją
- 27. Sortowanie elementów za pomocą NSDate i dodawanie do UITableView
- 28. filtrowanie i sortowanie za pomocą funkcji w Solr
- 29. Sortowanie wektora za pomocą wartości w innym wektorze
- 30. Python: sortowanie elementów w słowniku za pomocą części klucza?
Dodałem kolejne '| tr' przy odwróconych parametrach, aby wycofać łańcuch rozdzielany spacjami. – isuldor
Aby odwrócić sortowanie, użyj '-r'. – Tim