Добавить новый столбец с номером строки в файл с разделителями трубы - PullRequest
0 голосов
/ 12 октября 2018

Я действительно изо всех сил пытаюсь добавить новый столбец с номером строки в терминале в файл с разделителем канала

Мой текущий файл выглядит так:

ID|FirstName|LastName
12|John|Svernson
23|Mark|Wright
11|Chris|Watson

И я хочуфайл выглядит следующим образом:

LN|ID|FirstName|LastName
1|12|John|Svernson
2|23|Mark|Wright
3|11|Chris|Watson

У меня более 90 тыс. строк.Я не мог найти способ сделать это.Любая помощь или руководство будут оценены.Спасибо

Ответы [ 4 ]

0 голосов
/ 12 октября 2018

Интересная альтернатива:

{ echo LN; seq $(( $(wc -l < file) - 1 )); } | paste -d'|' - file

хотя на самом деле я бы использовал

awk '{print (NR==1 ? "LN" : NR-1), $0}' OFS="|" file
0 голосов
/ 12 октября 2018

Не могли бы вы попробовать следующее.

awk 'FNR==1{print "LN|"$0;next} {$1=++count "|" $1} 1'   Input_file

Чтобы записать вывод в сам файл Input_file, добавьте > temp_file && mv temp_file Input_file в приведенный выше код.

0 голосов
/ 12 октября 2018

Я бы использовал nl.Вы можете столкнуться с проблемами, если номер вашей строки превышает 6 цифр, но вы можете добавить -w, чтобы увеличить ширину номера, если вам нужно:

   { read line; echo "LN|$line"; cat | nl -w 10 -ba -s \|; } < input | 
       sed 's/^ *//';
0 голосов
/ 12 октября 2018

Использовать переменную awk NR (номер записи):

awk -F'|' 'NR==1{print "LN" FS $0}NR!=1{print NR-1 FS $0}' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...