столбцы awk и csv - PullRequest
       3

столбцы awk и csv

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

У меня есть CSV-файл, который выглядит следующим образом:

таблица

Необработанный CSV (с разделением;) для анализа:

number;abc;gender;middel;name;last name;existfrom;existuntil;ahv;specialnum;UID;pert;address;street;numberstr;po box;place;cntr;cntrcd;from;until;date;extra 
1;100000388;lady;W;jane;doe;16.08.1930;31.12.9999;7.56777E+12;500000387;;N;WOA;angel;47;;6020;moon;NL;16.01.2016;31.12.9999;31.12.9999; 
2;100000453;mister;M;jon;doe;29.12.1934;31.12.9999;7.56663E+12;500000452;;N;WOA;angel;11;;6314;moon;GR;16.01.2016;31.12.9999;22.09.2008;mutation 
3;100000469;lady;W;jane;doe;16.02.1941;31.12.9999;7.56486E+12;500000468;;N;WOA;angel;11;;6314;mooon;DE;16.01.2016;31.12.9999;22.09.2008;mutation 
4;100000490;mister;M;jon;doe;09.05.1936;31.12.9999;7.56841E+12;500000497;;N;WOA;silicon;65;;6340;moon;CZ;16.01.2016;31.12.9999;15.12.2010;Mutation

Форматированная таблица для удобства чтения:

+--------+-----------+--------+--------+------+-----------+------------+------------+-------------+------------+-----+------+---------+---------+-----------+--------+-------+-------+--------+------------+------------+------------+-----------+
| number |    abc    | gender | middel | name | last name | existfrom  | existuntil |     ahv     | specialnum | UID | pert | address | street  | numberstr | po box | place | cntr  | cntrcd |    from    |   until    |    date    |  extra    |
+--------+-----------+--------+--------+------+-----------+------------+------------+-------------+------------+-----+------+---------+---------+-----------+--------+-------+-------+--------+------------+------------+------------+-----------+
|      1 | 100000388 | lady   | W      | jane | doe       | 16.08.1930 | 31.12.9999 | 7.56777E+12 |  500000387 |     | N    | WOA     | angel   |        47 |        |  6020 | moon  | NL     | 16.01.2016 | 31.12.9999 | 31.12.9999 |           |
|      2 | 100000453 | mister | M      | jon  | doe       | 29.12.1934 | 31.12.9999 | 7.56663E+12 |  500000452 |     | N    | WOA     | angel   |        11 |        |  6314 | moon  | GR     | 16.01.2016 | 31.12.9999 | 22.09.2008 | mutation  |
|      3 | 100000469 | lady   | W      | jane | doe       | 16.02.1941 | 31.12.9999 | 7.56486E+12 |  500000468 |     | N    | WOA     | angel   |        11 |        |  6314 | mooon | DE     | 16.01.2016 | 31.12.9999 | 22.09.2008 | mutation  |
|      4 | 100000490 | mister | M      | jon  | doe       | 09.05.1936 | 31.12.9999 | 7.56841E+12 |  500000497 |     | N    | WOA     | silicon |        65 |        |  6340 | moon  | CZ     | 16.01.2016 | 31.12.9999 | 15.12.2010 | Mutation  |
+--------+-----------+--------+--------+------+-----------+------------+------------+-------------+------------+-----+------+---------+---------+-----------+--------+-------+-------+--------+------------+------------+------------+-----------+

Среди прочих задач мне нужно получить 3 последние цифры из столбца I и поместить их в столбец O, но безуспешно.

например.Столбец I имеет номер 7567766885966, мне нужно получить 966 и поместить его в столбец O, заменив существующий номер в столбце O.

До сих пор мне удавалось это сделать:

#!/bin/sh 

oldCsvFile=old.csv 
newCsvFile=new.csv 

#insert first line as is to the new file 
head -1 $oldCsvFile > $newCsvFile 

#replace columns 7 and 13 /w overwriting values 
awk '{FS=";"; OFS=FS; $7="\"01.08.2019\""; $13="\"RandomStreet\""; print $0}' $oldCsvFile >> $newCsvFile 

удалить вторую и последнюю строку, которые являются первой и последней строкой исходного файла / с перезаписанными столбцами

sed -i '2 d' $newCsvFile 
sed -i '$ d' $newCsvFile 

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

tail -1 $oldCsvFile >> $newCsvFile'

Можете ли вы помочь мне?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...