Я хотел бы преобразовать
blue blue red green
в:
color.1=blue color.2=blue color.3=red color.4=green
Любые выводы о том, как справиться с этим? sed, awk и т. д. ?
Вот путь Python:
#!/usr/bin/env python2
input_string = 'blue blue red green'
count = 1
for value in input_string.split():
print 'color.{0}={1}'.format(count, value),
count += 1
Выход: color.1=blue color.2=blue color.3=red color.4=green
Вот путь sed:
$ n=1;x=color;echo "blue blue red green" | sed -rn "s/^([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)$/$x\.$n=\1 $x\.$((n+1))=\2 $x\.$((n+2))=\3 $x\.$((n+3))=\4/p"
Выход: color.1=blue color.2=blue color.3=red color.4=green
Здесь мы использовали переменную n для хранения 1 и x для хранения строки color, а затем использовали группировку и обратную связь для получения желаемого результата.
Это awk-решение, если ваши цвета больше:
awk '{ printf("color.%d=%s ",NR, $0 ) }' RS='[[:blank:]]+' infile
color.1=blue color.2=blue color.3=red color.4=green
RS определяет пробелы / вкладки как разделитель записи с вхождениями одного или нескольких раз +. Затем команда printf печатает текущее поле «Номер записи /», а затем печатает всю запись / поле $0 из infile в качестве входного файла.