У меня возникли проблемы с awk, выводящим определенный столбец из моего файла журнала.Ошибка awk вывод определенного столбца в dumpsys
Ввод: журнал хранения dumpsys с несколькими моментальными снимками в файле Попытка вывода: размер PSS, кучи, кучи Alloc и кучи свободных сумм.
Маленький боковой я: форматирование вывода в синтаксисе массива js. Я разберусь закрывающая скобка позже
ввод образца ниже (некоторые из этих снимков находятся в самом файле):
Applications Memory Usage (kB):
Uptime: 232535528 Realtime: 544103118
** MEMINFO in pid 28141 [com.test.helloworld] **
Pss Private Private Swapped Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 0 0 0 0 246840 217671 648
Dalvik Heap 8327 8208 0 556 11892 10861 1031
Dalvik Other 2639 2288 124 1012
Stack 528 528 0 0
Ashmem 138 128 0 0
Other dev 89770 11540 69612 0
.so mmap 10497 2204 7836 8448
.apk mmap 280 0 140 0
.dex mmap 1219 64 444 244
Other mmap 950 576 128 736
Unknown 223484 223468 0 96
TOTAL 337832 249004 78284 11092 258732 228532 1679
Objects
Views: 9 ViewRootImpl: 1
AppContexts: 4 Activities: 1
Assets: 3 AssetManagers: 3
Local Binders: 14 Proxy Binders: 24
Death Recipients: 1
OpenSSL Sockets: 4
SQL
MEMORY_USED: 0
PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
Это странная проблема. Моя команда awk работает при выводе всех столбцов, кроме 8-го столбца.
Рабочий пример. Не пытаясь вывести 8-й столбец, я вывожу вместо него $ 1, и он работает по назначению. Примечание - я рассталась команду AWK на несколько строк для StackOverflow читаемости, я на самом деле ввода его в одной строке:
awk -v line_counter="$COUNTER" -v row_operand=0 '
BEGIN{row_operand=NR%19;
if (row_operand == 0){
print "[[\x27 frame \x27,\x27 Total_PSS_RAM_Usage \x27,\x27 Heap_Size \x27,\x27 Heap_Alloc \x27,\x27 Heap_Free \x27],"
}
}
{row_operand=NR-19;row_operand=row_operand%32;
if (row_operand == 0){
print "["line_counter","$2","$6","$7","$1" ],"
}
}' logfile.txt
And the output:
[[' frame ',' Total_PSS_RAM_Usage ',' Heap_Size ',' Heap_Alloc ',' Heap_Free '],
[0,337832,258732,228532,228532 ],
[0,338591,258732,227821,227821 ],
[0,338431,214996,202579,202579 ],
Проблема Например: При попытке вывода 8-й столбец, $ 8, весь формат вывода breaks и значение row_operand полностью опущено. Я очень смущен, так как я изменяю только одну цифру (например, от $ 1 до $ 8), чтобы получить эти разные результаты.
awk -v line_counter="$COUNTER" -v row_operand=0 '
BEGIN{row_operand=NR%19;
if (row_operand == 0){
print "[[\x27 frame \x27,\x27 Total_PSS_RAM_Usage \x27,\x27 Heap_Size \x27,\x27 Heap_Alloc \x27,\x27 Heap_Free \x27],"
}
}
{row_operand=NR-19;row_operand=row_operand%32;
if (row_operand == 0){print "["line_counter","$2","$6","$7","$8" ],"
}
}' logfile.txt
And the ouput:
[[' frame ',' Total_PSS_RAM_Usage ',' Heap_Size ',' Heap_Alloc ',' Heap_Free '],
],337832,258732,228532,1679
],338591,258732,227821,2390
],338431,214996,202579,5864
Любая помощь будет оценена по достоинству.
Great слежки; простой способ удалить CR со стандартными инструментами в bash - это 'sed $ 's/\ r $ //''. – mklement0
Это ответ. Мне просто нужно было запустить команду sed в вашей предоставленной ссылке и комментарий mklement «sed $ 's/\ r $ //». Вся эта ситуация нечетна, так как я никогда не сохранял файл в среде Windows. Файл был сгенерирован командой dumpsys в оболочке Android. В любом случае, очень хорошо. Спасибо, ракраман –