Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
WarstoneПамять не зависит от размера файла. Все зависит от реализации. Если написать Код: ruby 1. 2. весь файл будет записан в @lines и при размере файла в 100 ГБ вся доступная оперативная память будет заполнена. А в случае однострочника, действительно не будет зависеть от размера файла, т.к. будет производиться обработка построчно, без загрузки файла в память. Что касается однострочников, то можно еще так: $ cat file.csv a,b,c,d,e,f a,b,c,d,e,f a,b,c,d,e,f a,b,c,d,e,f # не деструктивный, т.е. не меняет файл с записью в файл file_new.csv $ less file.csv | perl -F, -naE 'say ",,$F[2],,$F[4],"' > file_new.csv # деструктивный, с созданием резервной копии $ perl -i.bak -pE 's/\w+,\w+,(\w+),\w+,(\w+),\w+/,,$1,,$2,/' file.csv ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2013, 11:54 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Testor1Всем привет ! Какой быстрый способ существует на PERL для замены значения столбцах CSV строки? Требуется значение всех столбцов заменить на пустую строку, кроме заранее определенных столбцов. Пример исходная строка a,b,c,d,e Требуется оставить значение 3 и 5 столбца. конечная строка ,,c,,e perl -E 'for ( split /,/, "aa,bbbb,ccccc,dd,eeeeeeeeeee") { $tmp[$i++] = ( $i != 2 and $i != 4 )? "" : $_ } say join ",", @tmp' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2013, 20:34 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
vkle, perl -aF/,/ -nE 'say ",,$F[2],,$F[4]"' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2013, 21:08 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
[quot Testor1]vklesplit по разделителю полей. Если только разделитель не попадет внутрь поля.... Потом собрать из нужных полей строку. Как вариант, регуляркой заменить ненужное на пустую строку.[/quot Как регуляркой указать столбец ? vkle сказал, что низзя, а вот МОЖНО: perl -E 'say ",,", /([^,]*,*){3}/, ",", /([^,]*,*){5}/ for "aa,bbbb,ccccc,dd,eeeeeeeeeee"' ( проверять под Линухом, а под Виндусом двойные и одинарные кавычки надо поменять местами ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 08:23 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
[quot volodin661]Testor1пропущено... vkle сказал, что низзя, а вот МОЖНО: perl -E 'say ",,", /([^,]*,*){3}/, ",", /([^,]*,*){5}/ for "aa,bbbb,ccccc,dd,eeeeeeeeeee"' ( проверять под Линухом, а под Виндусом двойные и одинарные кавычки надо поменять местами ) а можно и так: $_="aa,bbbb,ccccc,dd,eeeeeeeeeee"; say "Третий: ", [m/[^,]*,*/g]->[2]'; say "Пятый: ", [m/[^,]*,*/g]->[4]'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 08:46 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
volodin661, Спасибо за предложенные варианты. Я не спец, но вопрос - краткость кода означает его производительность в данном конкретном случае ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 14:52 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
Testor1volodin661, Спасибо за предложенные варианты. Я не спец, но вопрос - краткость кода означает его производительность в данном конкретном случае ? Краткость кода в случае приведенных примеров означает точное следование поставленной задачи с наложенной эстетикой программирования на Perl, где, чем короче, тем круче )) Ставить в прямое соответствие краткость кода производительности в случае механизма НеДетерминированных Конечных Автоматов( его использует механизм рег. выр. Perl) , я не решусь. для проверки производительности можно, например, воспользоваться модулем Benchmark; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2013, 17:51 |
|
||
|
(Perl) Замена в CSV файле
|
|||
|---|---|---|---|
|
#18+
как честный человек хочу сказать, что в PERL 6 регулярными выражениями эта задачка - в CSV-строке выделить только 3-й и 5-й столбцы - решается самым естественным с точки зрения человеческого(английского) языка образом: Код: perl 1. 2. 3. 4. 5. output: 333 (55;555) регулярные выражения в Perl6 вместе со всем прочим претерпели самые решительные изменения, поэтому некоторые пояснения: класс символов теперь представляется не квадратными скобками [ ... ], а вот так: Код: php 1. , a сами квадратные скобки служат для незахватывающей группировки. угловые скобки - это assertion Исключение из класса символов теперь не птичка ^ внутри квадр.скобок, а минус перед ними Код: php 1. метасимвол + остался служить квантификатором, пробелы являются незначащими по умолчанию. Модификаторы переехали с конца на перед и перед ними ставится двоеточие. Код: php 1. Код: php 1. match -переменные $0,$1 итд отсчитываются теперь от 0 и, строго говоря, являются синтактическим сахаром; результаты хранятся в Match-об'екте $/ , так что $0 - это $/[0], $1 - это $/[1] итд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2015, 13:31 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=39002325&tid=1461669]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 319ms |

| 0 / 0 |
