В Linux вы можете запросить виртуальное адресное пространство некоторого процесса, используя proc (5)и pmap (1).
Итак, для процесса 1234 запустите cat /proc/1234/maps
, pmap 1234
,cat /proc/1234/numa_maps
См. также numa (7 ), numa _карты (5 ), set _mempolicy (2 ), numactl (8).
Что-то подобное с sed
может помочь:
$ sed "s/^.*version_apk': '\([^']*\).*account_id': \([^,]*\).*$/\1 \2/" syslog
2.3.7 2417963
Для каждой строки это
^
).*
), пока не дойдет доversion_apk: '
\(...\)
). Эта группа соответствует 0 или более символам, которые не являются одинарной кавычкой (— одиночной кавычкой, которая заканчивала бы значение версии _apk;[^']*
). .*
), пока не дойдет доaccount_id:
account_id
;[^,]*
).*$
)\1 \2
)Предполагается, что version_apk
всегда предшествует account_id
.
С GNU awk для 3-го аргумента для match()
иgensub()
:
$ cat tst.awk
/'login_context'/ && /'platform': 'mobile_native_apk'/ && /R./ && /result/ {
delete f
while ( match($0,/'([^']+)': ('[^']+'|[0-9]+)/,a) ) {
f[a[1]] = gensub(/'/,"","g",a[2])
$0 = substr($0,RSTART+RLENGTH)
}
print f["version_apk"], f["account_id"]
}
$ awk -f tst.awk file
2.3.7 2417963