Добавление переменного количества строк в файл в Bash - PullRequest
0 голосов
/ 27 января 2020

У меня есть файл со строками формата XXXXXX_N, где N - некоторое число. Например:

41010401_1
42023920_3
45788_1

Я хотел бы добавить N-1 строк перед каждой строкой, где N> 1, так, чтобы у меня были строки для указанного значения XXXX со всеми N значениями вплоть до исходного N:

41010401_1
42023920_1
42023920_2
42023920_3
45788_1

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

Любая помощь будет признательна.

1 Ответ

0 голосов
/ 27 января 2020

Одним из способов является установка разделителей полей для подчеркивания и печати всех пропущенных записей, когда 2-е поле больше 1 в al oop, как показано ниже.

$ awk 'BEGIN{FS=OFS="_"} $2>1{for(i=1;i<$2;i++) print $1,i} 1' file
41010401_1
42023920_1
42023920_2
42023920_3
45788_1
...