Это стоило мне сна.
Предположим, у вас есть файл a_file.txt, как показано ниже.
1000 JUC_0000 1
2494 JUC_AAAA 2
2495 JUC_BBBB1 3
2495 JUC_BBBB2 4
4676 JUC_CCCC 5
4677 JUC_DDDD1 6
4677 JUC_DDDD2 7
Если ты бежишь
awk '{if($1==4677){print $0;}}' a_file.txt
Вы получите то, что ожидаете:
4677 JUC_DDDD1 6
4677 JUC_DDDD2 7
Однако если вы запустите
awk '{if($1==04677){print $0;}}' a_file.txt
Вы могли быть (я) удивлены, узнав
2495 JUC_BBBB1 3
2495 JUC_BBBB2 4
Похоже, что awk интерпретирует 04677 как восьмеричное представление 2495 и работает с ним.
Два вопроса:
- Верна ли моя интерпретация результата?
- Есть ли способ запретить awk интерпретировать числа, начинающиеся с 0, как восьмеричные числа и вместо этого использовать их десятичную интерпретацию?
- У gawk такое же поведение, и можно ли его изменить?
Is my interpretation of the result correct?
да, ваша интерпретация верна - person Jose Ricardo Bustos M.   schedule 07.03.2017(2)
Только я могу думать о$1==int("04677")
...... - person Jose Ricardo Bustos M.   schedule 07.03.2017Does gawk have the same behaviour
да ...is it possible to change it?
без понятия - person Jose Ricardo Bustos M.   schedule 07.03.2017