А-ч, я не знал, что не bash/awk/shell ответы были позволены. Я повторю рекомендации не использовать хакерство оболочки для контакта с CSV. Вот мое решение для жемчуга. Эти единственные модули ядра использования:
#!/usr/bin/perl
# The 9th field
# convert DD-MMM-YY to YYYY/MM/DD.
# using only perl core modules
use warnings;
use strict;
use diagnostics;
use Text::ParseWords;
use Time::Piece;
my $csvfile = "file.csv";
my $csvfilenew = "file_new.csv";
my $line = ();
my @fields = ();
open( FILE, "<$csvfile" )
or die("Couldn't open CSV file $csvfile:$!\\n");
open( OUTFILE, ">>$csvfilenew" )
or die("Couldn't open new CSV file $csvfilenew:$!\\n");
while ( $line = <FILE> ) {
my @fields = quotewords( ',', 1, $line );
if (index($line, "column1") != -1) {
print "skipping first line - doesn't contain dates to parse!\n";
next;
}
# DD-MMM-YY to YYYY/MM/MM
# The strftime man page describes all of the date string variables
my $date = Time::Piece->strptime($fields[8], '"%e-%b-%y"');
$fields[8] = $date->strftime('"%Y/%m/%d"');
print OUTFILE join( ',', @fields );
}
close (FILE);
close (OUTFILE);
При удалении кавычек из полей, которые не содержат запятые, то необходимо будет внести следующее изменение:
my $date = Time::Piece->strptime($fields[8], '%e-%b-%y');
$fields[8] = $date->strftime('%Y/%m/%d');
Решение состоит в том, чтобы пометить новые соединения и использовать знак для маршрутизации политики:
iptables -t mangle -A FORWARD -i ve006 -m connmark -j CONNMARK --set-mark 6
iptables -t mangle -A FORWARD -i ve010 -m connmark -j CONNMARK --set-mark 10
Правило IP
имеет тест для FWRARK
. Таким образом, вы создаете таблицу маршрутизации для VE006
и один для VE010
.
ip route add default table ve006 via a.b.c.51 dev ve006
# .51 again, typo?
ip route add default table ve010 via a.b.c.51 dev ve010
ip rule add pref 100 iif ve998 fwmark 6 table ve006
ip rule add pref 101 iif ve998 fwmark 10 table ve010