На самом деле, у вас нет проблем. Это потому, что обе команды показывают правильную информацию. Это другое, потому что ls
показывает размер файла (когда вы открываете и читаете его, это количество байтов, которое вы получите), а
du
показывает фактический диск использование, которое может быть меньше размера файла из-за дыр.
Операторы AWK состоят из шаблона и действия: цитируя руководство GNU awk
правило выполняется, когда его шаблон совпадает с текущей входной записью
В первом случае вы не предоставляете никакой входной записи - поэтому вы не получаете никакого действия. В этом случае можно использовать специальный шаблон BEGIN
awk 'BEGIN {print 3 + 3}'