Нет, это не будет работать с (только) sed
, потому что вам придется разбирать дату как часть процесса.
Вы можете сделать это с помощью команды date
, или лично я бы выбрал perl
- вы можете использовать его как sed
, но в нем также есть модуль Time::Piece
, который также выполняет разбор даты.
Запускаемый пример:
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
while ( <DATA> ) {
chomp;
print Time::Piece->strptime($_, "%d/%m/%Y")->strftime("%B %Y"),"\n";
}
__DATA__
26/04/2008
26/05/2008
26/07/2009
Который вы можете 'one liner' для использования в pipes (или вы можете указать файлы для обработки в качестве аргументов в конце):
perl -MTime::Piece -nle 'print Time::Piece->strptime($_, "%d/%m/%Y")->strftime("%B %Y");'
Примечание - в обоих случаях предполагается, что даты только по одной в строке. Однако, при желании, несложно извлечь их в виде подстроки и эффективно 'sed' как шаблон подстроки.
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
while ( <DATA> ) {
s|(\d{2}/\d{2}/\d{4})|Time::Piece->strptime($1, "%d/%m/%Y")->strftime("%B %Y")|e;
print;
}
__DATA__
26/04/2008 and some text here
a line like this with a date of 26/05/2008
26/07/2009 and some more here maybe
Получится:
April 2008 and some text here
a line like this with a date of May 2008
July 2009 and some more here maybe
Опять же, можно перевести в один вариант:
perl -MTime::Piece -pe 's|(\d{2}/\d{2}/\d{4})|Time::Piece->strptime($1, "%d/%m/%Y")->strftime("%B %Y")|e;'
Probablemente necesite agregar una regla SNAT al nodo principal, para que el tráfico de los nodos de cómputo tenga la dirección IP de origen correcta cuando intente llegar a algún servidor en Internet. El envío de paquetes con una dirección IP de origen en el rango 172.20.20.0/24 no funcionará.
Puede configurar el SNAT de esta manera en su nodo principal:
iptables -t nat -A POSTROUTING -o eth0 -s 172.20.20.0/24 -j SNAT --to 32.68.106.1