десятичные центрированные столбцы unix

Если вы предпочитаете делать это в awk, вы можете сделать следующее. Split позволяет разделить строку любым разделителем полей.

awk  '{split($7,a,"/"); split(a[3],b,"m="); split(b[2],c,"&"); split(c[2],d,"="); print a[2], c[1], d[1], d[2] }' logfile

Это генерирует желаемые столбцы.

userx contacts a form
usery customer doajax request
userx meeting doajax date

Остающийся шаг - отформатировать. Массивы в awk ассоциативны и могут индексироваться строками - см. здесь . Вы можете сделать следующее; здесь op (сокращение от output) инициализируется значением null. Затем мы устанавливаем op [d [1]] = d [2] .

awk  '{split($7,a,"/"); split(a[3],b,"m="); split(b[2],c,"&"); split(c[2],d,"="); op["a"]="null"; op["doajax"]="null"; op["ajaxaction"]="null"; op[d[1]]=d[2];print a[2], c[1], op["a"], op["doajax"], op["ajaxaction"] }' junk.txt 

[изменено на]

awk  '{split($7,a,"/"); split(a[3],b,"m="); split(b[2],c,"&"); split(c[2],d,"="); op["a"]="null"; op["doajax"]="null"; op["action"]="null"; op[d[1]]=d[2]; split(c[3],f,"="); split(f[2],g,"."); op[f[1]]=g[1]; print a[2], c[1], op["a"], op["doajax"], op["action"] }' junk.txt 

Вывод выглядит следующим образом

userx contacts form null null
usery customer null request getContacts
userx meeting null date null

1
17.10.2017, 01:55
0 ответов

Теги

Похожие вопросы