Это потому, что Bash интерпретирует $1
как ссылку на первый аргумент оболочки, поэтому он заменяет его своим значением.Поскольку в вашем случае этот параметр не установлен, $1
просто заменяется пустой строкой;так что ваша программа AWK на самом деле просто {print }
, которая печатает всю строку.
Чтобы не допустить этого в Bash, заключите вашу программу AWK в одинарные кавычки вместо двойных кавычек:
echo "Hello brave new world" | awk '{print $1}'
или
echo 'Hello brave new world' | awk '{print $1}'