Сопоставления заголовка недостаточно, так как сообщения могут иметь другой адрес Кому, чем адрес получателя конверта. См.http://www.linuxmail.info/postfix-restrict-sender-recipient/для некоторых советов по отклонению почты на основе адреса получателя. Другим решением может быть полное удаление адреса получателя, конечно, вы не можете этого сделать, если содержимое почтового ящика все еще необходимо, и вы планируете повторно активировать адрес в будущем.
Объединение двух команд awk
(и командыsed
):
awk -F ';' '
x == 1 {
gsub("[:,-]", "")
tspec = sprintf("%4d %.2d %.2d 00 00 00", substr($1,1,4), substr($1,5,2), substr($1,7,4))
t = mktime(tspec)
print $1, $2, $3, $4, 0 + strftime("%j", t)
}
/Date/ { x = 1 }' file
Это предполагает, что вы используете GNU awk
или mawk
(, а не BSD awk
, которые могут не реализовывать mktime()
илиstrftime()
).
Код объединяет две команды awk
иsed
(с использованием gsub()
), и я также взял на себя смелость исправить синтаксический анализ даты для установки tspec
.
Учитывая файл,
...
...
Date;Time;Airtemp;Quality;;Other info
1961-01-01;06:00:00;0.4;G;;...
1961-01-01;12:00:00;2.3;G;;...
1961-01-01;18:00:00;...;.;;...
1961-01-02;15:00:00;...;.
2015-09-01;........;...;.
это даст
19610101 060000 0.4 G 1
19610101 120000 2.3 G 1
19610101 180000.... 1
19610102 150000.... 2
20150901............ 244
Обратите внимание, что пробел является разделителем полей вывода по умолчанию (OFS
), поэтому, если вы не задаете OFS
что-либо явно, вы (не должны )выводить пробелы, используя " "
между каждым полем вывода.
На этот вопрос сложно ответить, поскольку вы не показываете нам реальных данных. Но, если я правильно вас понял, вам вообще не нужно учитывать метку времени. в зависимости от желаемого результата вы просто хотите удалить -
и :
из ввода и добавить дополнительный столбец:
$ awk -F';' '{day=substr($1,9,2); gsub(/[:-]/,""); printf "%s;%.1d\n",$0,day}' file
19610101;060000;0.4;G;...;1
19610101;120000;2.3;G;...;1
19610101;180000;...;.;1
19610102;150000;...;. ;2
..........;........;...;.;0
20150901;........;...;.;1
Или, если вы хотите, чтобы вкладки -разделяли столбцы, как вы показываете (, я думаю )в желаемом выводе:
$ awk -F';' -vOFS="\t" '{day=substr($1,9,2); gsub(/[:-]/,""); print $1,$2,$3,$4, sprintf("%.1d",day)}' file
19610101 060000 0.4 G 1
19610101 120000 2.3 G 1
19610101 180000 .... 1
19610102 150000 .... 2
.......... ........ .... 0
20150901 ........ .... 1
Попробуйте изменить $4 на $5, чтобы показать день года
{print $1 " " $2 " " $3 " " $4}