Как вырезать определенное поле из строки?Конкретные поля с использованием разреза или Awk
Проблема в том, что я не могу использовать cut -d ' ' -f 1,2,3,4,5,9,10,11,12,13,14
, так как поле меняется.
Скажем, у меня есть файл с именем/вар/Журнал/тест, и одна из линий внутри файла выглядит следующим образом:
Apr 12 07:48:11 172.89.92.41 %ASA-5-713120: Group = People, Username = james.robert, IP = 219.89.259.32, PHASE 2 COMPLETED (msgid=9a4ce822)
Мне нужно только, чтобы получить имя пользователя и времени/даты (пожалуйста, записные колонны постоянно меняются, поэтому мне нужно, чтобы соответствовать Имя пользователя = james.robert АПР 12 07:48:11
Когда я использую:.
grep "james" /var/log/tes | cut -d ' ' -f 1,2,3,4,5,9,10,11,12,13,14
не работает для меня Так что есть соответствовать e и печатает только имя пользователя и данные/время. Какие-либо предложения?
ИТАК, когда я использую это:
awk -F'[ ,]' '$12~/username/{print $1,$2,$3,$12}' /var/log/test
, но это работает для некоторых пользователей, но не другие, потому что поля двигаться.
Пример вывод этой команды:
12 апреля 6:00:39 james.robert
Но когда я пытаюсь этой командой этого имени пользователя, он не работает. Смотрите ниже:
вот еще один пример того, что с помощью данной команды ничего не показывает:
Apr 8 12:16:13 172.24.32.1 %ASA-6-713228: Group = people, Username = marry.tarin, IP = 209.157.190.11, Assigned private IP address 192.168.237.38 to remote user
Является ли первое поле всегда датой? –
да есть. но имя пользователя продолжает двигаться. –
Если вы могли бы разместить более одной записи в качестве примера. Вас спросили несколько человек. Мы стреляем в темноту и не можем догадаться о ваших крайних случаях. – JNevill