Bash - более эффективный способ обработки файла CSV, чем grep [закрыто]

добавьте #!/usr/bin/env python в начало вашего скрипта или вызовите свой скрипт, используя python myscript.py

1
задан Lou Diamonds 18 March 2019 в 21:21
поделиться

2 ответа

Есть ли причина, по которой вы хотите, чтобы последнее поле было указано? «+» Не имеет особого значения в CSV, поэтому не нуждается в кавычках и пустом поле. Text :: CSV_XS поддерживает цитирование пустых полей или цитирование всех полей, но еще не цитирование всех нечисловых полей. Основываясь на ответе Чоробы, который позволяет последнему полю быть «яблоко + яблоко + апельсин», который не определен в ОП, если это необходимо, я бы написал это так:

use 5.14.1;
use warnings;
use Text::CSV_XS qw( csv );
use Data::Peek;

chomp (my @fruits = do { local @ARGV = "file.txt"; <> });

my %order;
@order{@fruits} = 0 .. $#fruits;

my $regex = join "|", sort { length $b <=> length $a } @fruits;

csv (
    in          => "data1.csv",
    eol         => "\n",
    quote_empty => 1,
    on_in       => sub {
        push @{

Есть ли причина, по которой вы хотите, чтобы последнее поле было указано? «+» Не имеет особого значения в CSV, поэтому не нуждается в кавычках и пустом поле. Text :: CSV_XS поддерживает цитирование пустых полей или цитирование всех полей, но еще не цитирование всех нечисловых полей. Основываясь на ответе Чоробы, который позволяет последнему полю быть «яблоко + яблоко + апельсин», который не определен в ОП, если это необходимо, я бы написал это так:

[110][1]}, join "+" => sort { $order{$a} <=> $order{$b} } keys %{{map {

Есть ли причина, по которой вы хотите, чтобы последнее поле было указано? «+» Не имеет особого значения в CSV, поэтому не нуждается в кавычках и пустом поле. Text :: CSV_XS поддерживает цитирование пустых полей или цитирование всех полей, но еще не цитирование всех нечисловых полей. Основываясь на ответе Чоробы, который позволяет последнему полю быть «яблоко + яблоко + апельсин», который не определен в ОП, если это необходимо, я бы написал это так:

[110] => 1 } (

Есть ли причина, по которой вы хотите, чтобы последнее поле было указано? «+» Не имеет особого значения в CSV, поэтому не нуждается в кавычках и пустом поле. Text :: CSV_XS поддерживает цитирование пустых полей или цитирование всех полей, но еще не цитирование всех нечисловых полей. Основываясь на ответе Чоробы, который позволяет последнему полю быть «яблоко + яблоко + апельсин», который не определен в ОП, если это необходимо, я бы написал это так:

[110][1][1] =~ m/\b($regex)\b/g)}}; }, );
0
ответ дан Tux 18 March 2019 в 21:21
поделиться

Perl на помощь!

#!/usr/bin/perl
use warnings;
use strict;

use Text::CSV_XS qw{ csv };

open my $f1, '<', 'file.txt' or die $!;
my @fruits;
chomp, push @fruits, 

Perl на помощь!

[110]

К сожалению, Text :: CSV_XS не может заключить в кавычки последнее поле, если оно не содержит специального символа (или без кавычек всех поля). Если же file.txt не содержит двойных кавычек и запятых, вы можете легко их добавить:

perl ... | sed 's/,\([^,"]*\)$/,"\1"/'
while <$f1>; my %order; @order{@fruits} = 0 .. $#fruits; my $regex = join '|', sort { length $b <=> length $a } @fruits; csv( in => 'data.csv1', eol => "\n", on_in => sub { my @matches; push @matches, $1 while

Perl на помощь!

[110]

К сожалению, Text :: CSV_XS не может заключить в кавычки последнее поле, если оно не содержит специального символа (или без кавычек всех поля). Если же file.txt не содержит двойных кавычек и запятых, вы можете легко их добавить:

perl ... | sed 's/,\([^,"]*\)$/,"\1"/'
[1][1] =~ /\b($regex)\b/g; push @{

Perl на помощь!

[110]

К сожалению, Text :: CSV_XS не может заключить в кавычки последнее поле, если оно не содержит специального символа (или без кавычек всех поля). Если же file.txt не содержит двойных кавычек и запятых, вы можете легко их добавить:

perl ... | sed 's/,\([^,"]*\)$/,"\1"/'
[1] }, join '+', sort { $order{$a} <=> $order{$b} } @matches; }, );

К сожалению, Text :: CSV_XS не может заключить в кавычки последнее поле, если оно не содержит специального символа (или без кавычек всех поля). Если же file.txt не содержит двойных кавычек и запятых, вы можете легко их добавить:

perl ... | sed 's/,\([^,"]*\)$/,"\1"/'
0
ответ дан choroba 18 March 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: