Как добавить инкрементную целочисленную строку в текстовый файл с помощью команды grep или awk в терминале Linux?

Как добавить инкрементную целочисленную строку в текстовый файл с помощью команды grep или awk в терминале Linux?

У меня есть текстовый файл, содержащий более 10 миллионов строк. Файл выглядит так:

1902400023
1902400029
1902400031
1902400032

Я хотел добавить заголовок, инкрементный номер ID и постоянный SHORTCODE. Ожидаемый результат:

ID,MSISDN,SHORTCODE
1,1902400023,1
2,1902400029,1
3,1902400031,1
4,1902400032,1

И так будет продолжаться до конца файла и записи в другой файл.

решение1

Я думаю, вам нужен awkследующий код

awk 'BEGIN { OFS = ","; header="ID,MSISDN,SHORTCODE" } NR == 1 { print header } 
           { $2 = $0; $1 = NR; $3 = 1; }1' file

В BEGINпредложении мы устанавливаем разделитель выходных полей на ,оператор и инициализируем строку заголовка. Когда файл обрабатывается, в первую строку мы вставляем заголовок, а из последующих строк мы вставляем строки, как вы показали в OP. NR— это специальная переменная в контексте, awkкоторая отслеживает номер строки, который мы используем для вашего инкрементного счетчика.

решение2

Здесь вы можете использовать команду awk, как показано ниже, для добавления номеров строк:

$ awk '{printf("%d:%s\n", NR, $0)}' millionlinetextfile > linenumberedfile

Связанный контент