Итак, просто найдите все числа -тире -числа -тире -числа? Это будет работать с более длинными строками / строками, даже без каких-либо букв «T» сразу после даты.
grep -o "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]"
Или эквивалентно, но немного короче, с использованием фигурной скобки «повторяет/кратно»
grep -o '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}'
Пример:
$ echo 2017-03-08T19:41:26Z | grep -o '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}'
2017-03-08
Если во вводе не так много других тире, вы можете искать любые 4 символа, тире, два символа, тире, еще два символа:
$ echo 2017-03-08T19:41:26Z | grep -o '....-..-..'
2017-03-08
Это можно сделать с помощью модуля string
.
man iptables-extensions
:
The string pattern can be used for simple text characters.
iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string 'GET /index.html' -j LOGThe hex string pattern can be used for non-printable characters, like |0D 0A| or |0D0A|.
iptables -p udp --dport 53 -m string --algo bm --from 40 --to 57 --hex-string '|03|www|09|netfilter|03|org|00|'