Вывод на дисплей с помощью awk без скобок - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу, чтобы мой вывод отображался определенным образом.

У меня есть код ниже, но я хочу отображать даты без [] с обеих сторон:

icat -o 2048 someimage.E01 171 | grep /etc | awk '{print $1 "\t" $7 " \t" $4 $5 }' 

167.22.123.17   /home/me/file1  [13/Sep/2014:12:52:16-0400]
167.22.123.17   /home/me/file2  [13/Sep/2014:12:53:44-0400]

Я хочу, чтобы оно отображалось как:

167.22.123.17   /home/me/file1  [13/Sep/2014:12:52:16-0400]
167.22.123.17   /home/me/file2  [13/Sep/2014:12:53:44-0400]

Я посмотрел в Интернете, но не могу найти решение, которое работает. Некоторая помощь была бы отличной!

Ответы [ 2 ]

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

Это может сработать:

icat -o 2048 someimage.E01 171 | awk -v OFS="\t" '/\/etc/{print $1,$7, substr($4,2) substr($5,1,length($5)-1) }' 

И это также может работать:

icat -o 2048 someimage.E01 171 | awk 'BEGIN{FS="[][[:blank:]]+";OFS="\t"}/\/etc/{print $1,$7,$4 $5 }' 
0 голосов
/ 14 ноября 2018

Не могли бы вы попробовать следующее. Я использую --re-interval, так как у меня старый awk, вы можете удалить его, если у вас есть новая версия awk.

awk --re-interval  '
match($0,/\[[0-9]+\/[a-zA-Z]{3}\/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2}-[0-9]{4}\]/){
  print substr($0,1,RSTART-1),substr($0,RSTART+1,RLENGTH-2),substr($0,RSTART+RLENGTH+1)
  next
}
1
'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...