.
в шаблоне означает «любой символ». . \ {64 \}
означает «64 символа», любой из них.
\ 1
- это обратная ссылка на первую совпадающую группу, то есть то, что было сопоставлено первой парой круглых скобок \ (... \)
. Чтобы вставить литерал 1
, не добавляйте обратную косую черту.
Вы можете использовать "адреса" в sed, чтобы ограничить команду только некоторыми строками, например
sed '/^.\{46\}STRING ONE \{8\}/s/^\(.\{64\}\).\{16\}/\1AAAABBBBCCCC /'
, который читается как . Если строка начинается с 46 символов, за которыми следуют STRING ONE
и 8 пробелов, запомните первые 64 символа в \ 1
и замените их и следующие 16 знаков после запомненных знаков, за которыми следуют AAAABBBBCCCC
и четыре пробела.
Чтобы добавить больше команд с адресами, разделите их точкой с запятой или используйте несколько переключателей -e
:
sed -e '/address1/s/pattern1/replacement1/;/address2/s/pattern2/replacement2/'
sed -e '/address1/s/pattern1/replacement1/' -e '/address2/s/pattern2/replacement2/'
Файл журнала содержит формат даты в 2017-03-15T08: 00: 23.698411Z формат. Если это время в формате UTC, то есть 2017-03-15T08: 00: 23.698411Z (время и дата 08:00:23 и 2017-03- 15), и вам нужно преобразовать его в IST. Используйте команду ниже для последнего часа
date -d '2017-03-15T08: 00: 23.698411Z последние часы' -u +% s
1489561223
date -d @ 1489561223 + "% Y /% m /% d-% H:% M:% S"
2017/03 / 15-07: 00: 23
хочу вернуться 2 часа назад, затем используйте «2 часа назад» вместо «последние часы».
Примечание: - Я запускаю указанную выше команду на Linux-сервере, а время моего Linux-сервера указано в UTC. Если вы хотите запустить указанную выше команду на Linux-сервере IST, вам нужно добавить еще 5 часов 30 минут (например: - " 6 часов 30 минут назад "вместо" последние часы ").
С awk это что-то вроде:
$ var=$(date +"%b-%d-%Y-%I:%M:%S %p" | awk -F[-:] '{print $4}') && echo $var
04
$ var=$(date +"%b-%d-%Y-%I:%M:%S %p" | awk -F[-:] '{print $4 - 1}') && echo $var
3