удалить повторяющиеся шаблоны / записи в каждом поле в файле CSV

Вы можете сделать что-то вроде:

while IFS= read -r line; do
    if [[ ${line} =~ ^server\d+$ ]] ; then
        server=${line}
        continue
    fi
    ssh ${server} "echo ${line}"
done

Предполагая, что формат вашего файла не меняется.

1
20.03.2018, 08:22
2 ответа

Использование командной строки в оболочке (всего несколько строк )с надлежащим синтаксическим анализатором:

perl -CS -Mopen=":std,IN,OUT,IO,:encoding(utf8)" -MText::CSV -lne '
    BEGIN{
        our $csv = Text::CSV->new({ sep_char => "," });
        sub uniq { my %seen;  grep !$seen{lc $_}++, @_; }
    };
    $csv->parse($_) or die "parse error";
    print join ",", map { join "#", uniq split /#/ } $csv->fields();
' file.csv

Выход:

0x,9.4,,,#0,#UNIX,#cli#L#فا#0#SE,#فارسی#۱#1#١,bsh,#V & v

Примечание:

  • требуется установить Text::CSVмодуль Perl:sudo apt-get install libtext-csv-perlдля Debian и его производных
1
27.01.2020, 23:32

Я также кодирую ниже простое awkрешение:

awk -F, '{ i=0; comma=""; while (++i<=NF) {
    if ( split(tolower($i), arr, /#/)>1 ){ for(v in arr) !unq[arr[v]]++;printf comma;
        for (x in unq) {printf (x!="")?hash""x:""; hash="#"; delete unq[x]}}
    else {printf comma""$i; comma=","}}; print ""
}' infile.csv
0
27.01.2020, 23:32

Теги

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