Допустим, у меня есть эти данные в текстовом файле:

line1 
line2 
line3
line4
line5
...

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

1,line1
2,line2
3,line3
1,line4
2,line5
...

Как я могу добиться этого (желательно с помощью sed)?

1 ответ1

1

Это трудно сделать в sed потому что в нем нет арифметики. Однако есть несколько способов сделать это с помощью awk:

awk '{ printf "%d, %s\n", (linenum++ % 3) + 1, $0 }' lines.txt

или же

awk '{ print (linenum++ % 3) + 1 ", " $0 }' lines.txt

В обоих случаях linenum используется для подсчета строк, затем операция по модулю используется для вычисления остатка от количества строк, деленного на 3. 1 добавляется, чтобы получить схему нумерации, которую вы запросили.

printf предоставляет небольшую "конфету" для программы.

Смотрите man awk для деталей и других опций.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .