2016-07-05 2 views
1

Итак, у меня есть проблема, и я не знаю, как ее решить.Группы Как и имена хостов и добавить счетчик

У меня есть список имен хостов, которые похожи, но имеют тонкие отличия. Например:

hostname1000 
hostname1001 
hostname1002 
hostname1003 
hostname1004 
hostname2000 
hostname2001 
hostname2002 

Я хотел бы, чтобы сгруппировать эти имена хостов следующим образом:

hostname[1000-1004,2000-2002] 

Это было бы для использования с pdsh.

Я пробовал следующее, но он просто добавляет счет в конец имени файла и не группируется по счету uniq для имени хоста.

num=1;for a in $(cat range_hostname |cut -c 1-12 |sort) ; do echo ${a}${num}; num=$[num+1 ];done 

Любые идеи, было бы полезно :)

Спасибо! Джо

ответ

0

Так я и отвечал на unix.com и вот решение этой проблемы, чтобы другие могли видеть:

awk ' 
      {HN = $1 
      sub (/[0-9]*$/, _, HN) 
      sub (/^[a-z]*/, _, $1) 
      } 
NR == 1   {printf "%s[%04d-", HN, $1 
      } 
NR > 1 && 
$1+0 != LAST+1 {printf "%04d,%04d-", LAST, $1 
      } 
      {LAST = $1 
      } 
END    {printf "%04d]\n", $1 
      } 
' filename 

имя файла содержит список имен хостов одной линии одновременно.

Это также подразумевает группу из 4 цифр после имени хоста в

hostnmae0101 
hostname0102 
hostname0103 ... etc 

Выход будет

hostname[0101-0103] 

Спасибо! Joe

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