2013-05-29 4 views
0

У меня проблема с сортировкой списка. Я думаю, что это так, как я соединял струны. Но давайте посмотрим подробности:Сортировка списка в bash

У меня есть большие (окна) -txt-файлы. Это Readmes для исправлений. Я хочу, чтобы извлечь HotFix-номер с выпуском, которые решаются в этом выпуске, как это:

1378 Issue: Here is the issue that is fixed 
1390 Issue: Another issue is fixed 
1402 Issue: Yet another fixed issue 

У меня есть цикл, который вычисляет один файл за другим. В этом цикле после некоторых операций extract у меня есть 1 строковая переменная для HotFix-Number и tmp4.txt с текстом, принадлежащим HotFix-Number.

$NR=1378 
cat tmp4.txt - Output: Issue: Here is the issue that is fixed 

В конце цикла я эти компоненты вместе 2:

array[IDX]=$(echo $NR $(cat tmp4.txt)); 

После того, как цикл закончился, я проверил содержание каждого индекса. Если бы я повторить отдельные элементы, я получаю правильную форму:

echo ${array[0]} #output: 1390 Issue: Another issue is fixed 
echo ${array[1]} #output: 1378 Issue: Here is the issue that is fixed 
echo ${array[2]} #output: 1402 Issue: Yet another fixed issue 
...  

Но когда я хочу, чтобы отсортировать список с

for j in ${array[@]}; do echo "$j"; done | sort -n >> result.txt; 

Я получить файл, где все отдельные слова, отсортированные алфавитные. Но я просто хочу обратиться к HotFix-Number.

# Sampleoutput from result.txt for these 3 examples 
Another 
another 
fixed 
fixed 
fixed 
Here 
... 
Yet 
1378 
1390 
1402 
+0

Пожалуйста, уточните вопрос .. не имеет смысла. Особенно последнее предложение! –

+0

Возможный дубликат [Сортировка списка с несколькими элементами] (http://stackoverflow.com/questions/16812914/sorting-a-list-with-multi-part-items) –

ответ

3

Вы должны добавить кавычки ${array[@]}, как это:

for j in "${array[@]}"; do echo "$j"; done | sort -n >> result.txt; 

Это предотвратит Баш переосмысления пространства внутри ваших записей массива.

+0

wow thanks !!! Это сделает трюк. Но теперь у меня есть проблема: есть также номера, такие как 3312.1. Все числа, подобные этому, находятся в конце отсортированного вывода. –

+0

Десмалы, похоже, подходят для меня. Я предлагаю вам опубликовать новый вопрос и показать (образец) данные, которые входят в 'sort', и данные, которые выходят. – ams

Смежные вопросы