У меня есть входной файл с этой строкой (пользовательские данные / столбцы удалены) и еще несколько тысяч. XCE - это неконвертированное шестнадцатеричное значение из файла клиентов.
412640 xCE
Когда я запускаю его через эту команду awk:
awk -F'\t' '{if ($1 == "412640" ) print $1 "\t" $2}' TEST.txt > test1.txt
вывод в test1.txt конвертировал xCE в Î, что я и хочу сделать.
Когда я запускаю весь файл без if, вот эта команда:
awk -F'\t' '{print $1 "\t" $2}' TEST.txt > test2.txt
вывод в test2.txt все еще имеет в себе xCE, и когда я попытался:
awk -F'\t' '{if ($1 == $1 )print $1 "\t" $2}' TEST.txt > test2.txt
на выходе в test2 все еще есть xCE.
Любой совет о том, как всегда получить преобразованный вывод?
Я использую :: GNU Awk 3.1.7 Моя кодовая страница - UTF-8 На Redhat 6,7
РЕДАКТИРОВАТЬ: После большого количества модульного тестирования обеих «хороших» /«плохих» awk-команд, я не всегда могу повторить «плохой» вывод. Чем больше общее количество строк, тем меньше вероятность преобразования шестнадцатеричных значений, но это не 100% времени. Сейчас я пытаюсь контролировать размер буфера для awk, исходя из предположения, что это связано с прямой записью из буфера в выходной поток по сравнению с записью во внутренние временные файлы, когда ему нужен буфер для других целей.