Вы можете сделать что-то вроде:
while IFS= read -r line; do
if [[ ${line} =~ ^server\d+$ ]] ; then
server=${line}
continue
fi
ssh ${server} "echo ${line}"
done
Предполагая, что формат вашего файла не меняется.
Использование perl командной строки в оболочке (всего несколько строк )с надлежащим csv синтаксическим анализатором:
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 и его производных Я также кодирую ниже простое 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