Как я могу увеличить 16-значное число на 1, чтобы сделать 50 миллионов записей - PullRequest
0 голосов
/ 18 сентября 2019

У меня есть файл CSV / txt, который я хотел бы увеличить на 1, чтобы сделать 50 миллионов записей:

testfile.txt:
U|4100000000000001|21|01|CID1000001|PULL_TEST|ACTIVE
U|4100000000000002|21|01|CID1000002|PULL_TEST|ACTIVE

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

вот одно решение

$ awk -F'|' 'NR==1 {OFS=FS; p=substr($5,1,3); f5=substr($5,4)} 
                   {while(i++<10) {print; ++$2; $5=p (++f5)}}' file

U|4100000000000001|21|01|CID1000001|PULL_TEST|ACTIVE
U|4100000000000002|21|01|CID1000002|PULL_TEST|ACTIVE
U|4100000000000003|21|01|CID1000003|PULL_TEST|ACTIVE
U|4100000000000004|21|01|CID1000004|PULL_TEST|ACTIVE
U|4100000000000005|21|01|CID1000005|PULL_TEST|ACTIVE
U|4100000000000006|21|01|CID1000006|PULL_TEST|ACTIVE
U|4100000000000007|21|01|CID1000007|PULL_TEST|ACTIVE
U|4100000000000008|21|01|CID1000008|PULL_TEST|ACTIVE
U|4100000000000009|21|01|CID1000009|PULL_TEST|ACTIVE

обратите внимание, что длина пятого поля может измениться после 10M, как прокомментировал @ shellter.

0 голосов
/ 19 сентября 2019

Вот awk, который нужно сделать, просто измените 5 на 50000000

cat file
U|4100000000000001|21|01|CID1000001|PULL_TEST|ACTIVE

awk -F'|' '{OFS=FS;a=$2;split($5,b,"D");for(i=0;i<5;i++){$2=a+i;$5="CID"b[2]+i;print}}' file
U|4100000000000001|21|01|CID1000001|PULL_TEST|ACTIVE
U|4100000000000002|21|01|CID1000002|PULL_TEST|ACTIVE
U|4100000000000003|21|01|CID1000003|PULL_TEST|ACTIVE
U|4100000000000004|21|01|CID1000004|PULL_TEST|ACTIVE
U|4100000000000005|21|01|CID1000005|PULL_TEST|ACTIVE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...