Чтобы получить расширение файла для файлов, присутствующих в каждой строке, используйте скрипт - PullRequest
0 голосов
/ 17 января 2019

Как получить расширение файла ниже показанных данных. Очевидно, у меня есть миллионы строк в CSV-файле.

col1                             ,col2     ,col3                        ,col4     , col5, col6, col7
aaaaa/                           ,0        ,2018-03-16T09:31:42.000Z,   xx-daily.......
aaaaa/201802/                    ,0        ,2019-01-17T06:16:34.000Z,   xx-daily
aaaaa/201802/Feb2018000000_0.gzip,32602738,2018-09-11T04:05:38.000Z,    xx-daily
aaaaa/201802/Feb2018000001_0.gzip,32602738,2018-09-11T04:05:38.000Z,    xx-daily
aaaaa/201802/Feb2018000002_0.gzip,32602738,2018-09-11T04:05:38.000Z,    xx-daily
aaaaa/201802/Feb2018000003_0.gzip,32602187,2018-09-11T04:05:38.000Z,    xx-daily
aaaaa/201802/Feb2018000004_0.gzip,32602187,2018-09-11T04:05:39.000Z,    xx-daily
aaaaa/201802/Feb2018000005_0.gzip,32602187,2018-09-11T04:05:39.000Z,    xx-daily
aaaaa/201802/Feb2018000006_0.gzip,32578449,2018-09-11T04:05:39.000Z,    xx-daily

Мне нужно разделить расширение файла и создать еще один столбец, чтобы заполнить значение расширения файла в том же файле CSV.

Нужен вывод, как показано ниже

col1                             ,col2     ,col3                        ,col4     , col5, col6, col7
aaaaa/                                      ,0         ,2018-03-16T09:31:42.000Z,   xx-daily.......
aaaaa/201802/                               ,0         ,2019-01-17T06:16:34.000Z,   xx-daily
aaaaa/201802/Feb2018000000_0.gzip, gzip     ,32602738,2018-09-11T04:05:38.000Z, xx-daily
aaaaa/201802/Feb2018000001_0.gzip, gzip     ,32602738,2018-09-11T04:05:38.000Z, xx-daily
aaaaa/201802/Feb2018000002_0.gzip, gzip     ,32602738,2018-09-11T04:05:38.000Z, xx-daily

1 Ответ

0 голосов
/ 17 января 2019

Это немного неуклюже, не добавляет пробелы, которые вам нужны, и добавляет пустой столбец в те строки, которые не имеют расширения файла (я считаю, что это правильное поведение, и это достаточно легко изменить прекратить делать это, если хотите). Однако ни при каких обстоятельствах я не потворствую записи в тот же файл, из которого вы читаете. Некоторые реализации awk предоставляют такую ​​возможность, но ее использование ошибочно. Используйте фильтр и запишите свой вывод в другой файл. Если вам нужно, вы можете перезаписать оригинальный файл.

awk '{c=split($1,a,"."); ext=c>1?a[c]:""; $2=ext OFS $2}1' FS=, OFS=, input-file

Вы можете получить лучший интервал с:

awk '{c=split($1,a,"."); ext=c>1?a[c]:""; $2=ext OFS $2}1' FS=, OFS=',\t' input

и вы можете избежать пустого столбца (но вы действительно не хотите этого делать) с помощью:

awk '{c=split($1,a,"."); if( c > 1) $2=a[c] OFS $2}1' FS=, OFS=',\t' input
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...