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