Расширьте диапазоны чисел и строк вывода для каждого

Мы (команда PlayOnLinux )в настоящее время создаем новую систему сборки Wine. Мы планируем добавить поддержку GTK в ближайшее время.

Текущие сборки вина (с устаревшей системой )не поддерживают GTK+, поскольку в то время промежуточная сборка вина не компилировалась с помощью libgtk -dev.


ОБНОВЛЕНИЯ:

  • POL 4 был обновлен 18 октября 2018 г. для поддержки этого нового вина. система сборки. Мы напишем новость на сайте, возможно это неделю. См. также Добавлена ​​поддержка Wine. постановка .
  • 11.24.2018 :Последние промежуточные сборки Wine теперь поддерживают GTK 3.

0
02.12.2020, 13:21
1 ответ

Использованиеawk:

awk '{ if ( split($1, range,"-")>1 ){
           for(i=range[1]; i<=range[2]; i++) { print i, $2; };
           next;
       };
     }1' infile

split()первый столбец для символа -и использовать первый и второй индекс в качестве начала и конца диапазона в цикле и каждый раз печатать одну и ту же строку с приращением в диапазоне, затем читать строку nextи делать то же самое; если диапазона не было, выведите строку с действием печати awk по умолчанию 1.

если есть другие символы, кроме тире для диапазона, вы можете изменить третий аргумент функции split(), чтобы указать это, например:

split($1, range, /-|,|\.\./)

для работы с -, ,и ..в качестве символов диапазона.

образец ввода (Разделитель табуляцией):

class   subject
1,2     x
3       y
4-5     a
3..6    z

Вывод с измененным split()для распознавания -, ,и ..в качестве разделителей диапазонов:

class  subject
1      x
2      x
3      y
4      a
5      a
3      z
4      z
5      z
6      z
3
18.03.2021, 22:45

Теги

Похожие вопросы