awk 'NR>2&&NR<5' Input_file
- это место, где мы проверяем условие, если номер строки больше 2 и больше 5, затем выполняем действие по умолчанию, которое печатает текущую строку.
В вашем коде awk '{print NR>2&&NR<5}' Input_file
, здесь вы используете print, а затем упоминаете условие, которое НЕ работает awk.
awk работает по методу:
Condition_check/regexp{action}
, если НЕТ никакого действия, то по умолчанию произойдет печать текущей строки, которая происходит в вашем первый код.
Дополнительный анализ: Чтобы доказать, что точка {print NR>2&&NR<5}
НЕ будет вести себя как метод по умолчанию awk
из regexp/condition_check{action}
, запустите:
awk '{print (NR>2&&NR<5)}' Input_file
Посмотрите на вывод, что он предоставит:
0
0
1
1
0
0
0
0
0
0
См. Строки 3 и 4, где 1
означает, что условие для этой строки - ИСТИНА, а 0
- условие для этой строки, - ЛОЖЬ. Таким образом, мы можем видеть, что он печатает состояние STATE в выражении print
, если мы используем условие в (..)
, как упомянуто выше.