Изменить подстроку без изменения строки в Bash - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть эта строка:

14-Nov-2018 10:14:44.775 client IP1#59098: view internal: query: DOMAIN IN A + (IP2)

Я хочу разобрать, чтобы удалить минуты и секунды из часа. Результат будет следующим:

14-Nov-2018 10 client IP1#59098: view internal: query: DOMAIN IN A + (IP2)

Я получаю эту строку из файла, поэтому было бы идеально, если бы это было достигнуто с помощью канала. Моя текущая строка выглядит следующим образом:

cat $dns_logs | grep "$date" | HERE WOULD BE YOUR SOLUTION > $temp_queries

Спасибо!

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Если вы в порядке с awk, не могли бы вы попробовать следующее.

echo "14-Nov-2018 10:14:44.775 client IP1#59098: view internal: query: DOMAIN IN A + (IP2)" | 
awk '
  match($0,/[0-9]+:[0-9]+:[0-9]+\.[0-9]+/){
  print substr($0,1,RSTART-1),substr(substr($0,RSTART,RLENGTH),1,2),substr($0,RSTART+RLENGTH+1)
  next
}
1'
0 голосов
/ 14 ноября 2018

Вся строка может быть сделана как

awk -v d="$date" '($0 ~ d){$2=substr($2,1,2); print}' "$dns_logs"
0 голосов
/ 14 ноября 2018
sed -r 's/(:[0-9]{2}){2}\.[0-9]{3} //'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...