grep должен найти шестнадцатеричное значение в файле, но не

легко найти файлы в соответствии со временем, которое вы предпочитаете. но для получения результата вы можете использовать awkвот так:

  awk -F\| '!/^\s*$/{if($4=="S:0"){Arr0[$1","$2","$3]+=1} else {Arr1[$1","$2","$3]+=1}}END{for(i in Arr1){print i,",",Arr0[i],",",Arr1[i]}}'

пояснение:

  1. -Ф\| :определите |как разделитель полей

  2. !/^\s *$/ :пропустить пустые строки

  3. if(Clause){Statement}else{statement}:очистить

  4. END{...}:этот блок выполняется, когда оператор расширен до EOF

6
18.08.2021, 18:57
1 ответ

\x0a— это не просто любое шестнадцатеричное значение -, это шестнадцатеричное значение, соответствующее символу перевода строки ASCII.

Поскольку grep по умолчанию основан на ()строке -, символы перевода строки удаляются перед сопоставлением с образцом. По крайней мере, с GNU grep вы можете изменить это поведение с помощью опции -z:

   -z, --null-data
          Treat  input  and  output  data  as  sequences  of  lines,  each
          terminated by a zero byte (the ASCII NUL character) instead of a
          newline. 

однако обратите внимание, что это удалит нули ASCII, так что вы больше не сможете искать эти .

23
20.08.2021, 10:24

Теги

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