2016-03-20 5 views
0

У меня есть файл info.txt с разделителем каналов, можете ли вы дать мне представление о том, как получить наивысший суффикс и добавить записи на нем на основе шаблона?
получите наивысший номер, а затем напечатайте следующий номер в новом файле

info="$HOME/info.txt" 
echo "Input the pattern: " 
read pattern 

awk '/pattern/{ print $0 }' $info >> $HOME/temp1.$$ 
sed 's/MICRO_AU_FILE//g' $HOME/temp1.$$ 
##then count highest num but i think not good approach 
##if got he highest num then print next number 

for ACC_NUM in `cat acc` 
    do 
echo "$pattern-FILE$Highestsufix|server|$ACC_NUM*| >> $HOME/tempfile.$$ 
cat $HOME/tempfile.$$ >> $info 
done 
fi 

info.txt

MICRO_AU-FILE01|serve|12345 
MICRO_AU-FILE02|serve|23456 
MICRO_AU-FILE04|serve|34534 
MICRO_PH-FILE01|serve|56457 
MICRO_PH-FILE02|serve|12345 
MICRO_BN-FILE01|serve|78564 
MICRO_BN-FILE03|serve|45267 

согласно

11111 
22222 

выход: если моя картина MICRO_AU

MICRO_AU-FILE01|serve|12345 
MICRO_AU-FILE02|serve|23456 
MICRO_AU-FILE04|serve|34534 
MICRO_PL-FILE01|serve|56457 
MICRO_PL-FILE02|serve|12345 
MICRO_BN-FILE01|serve|78564 
MICRO_BN-FILE03|serve|45267 
MICRO_AU-FILE05|serve|11111 
MICRO_AU-FILE06|serve|22222 

ответ

0

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

HIGHEST_INDEX=$(cut -c 14,15|sort -nr|head -n 1) 

Если структура линий может меняться, вы должны адаптировать селектор номера (cut -c 14,15) в соответствии с вашим Tast.

UPDATE: Я вижу, что вы отметили свой вопрос с оболочки, а не с Баш, Zsh или KSH. Если вам нужна программа для запуска и на Bourne Shell, вы должны использовать

HIGHEST_INDEX=`cut -c 14,15|sort -nr|head -n 1` 

В общем, лучше всего с этим типом вопроса, если вы явно указать, на какой оболочке (ы) ваша программа должна работать , Чем конкретнее вы в этом плане, тем лучшее решение мы можем предложить. Например, получение следующего более высокого номера (после HIGHEST_INDEX) более сложное в оболочке Bourne, чем в других.

+0

Я пытаюсь использовать Bourne Shell, я попробовал команду и хорошо смотрел, но позиция цифр не всегда 14,15, которая меняется. Я буду использовать аналогию, о которой вы говорили. Благодаря, – Nympha

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