Ответ 1
Это выглядит как разница в поведении при обработке \s
между grep 2.5 и более новыми версиями (ошибка в старой grep?). Я подтверждаю ваш результат с помощью grep 2.5.4, но все четыре команды grep работают при использовании grep 2.6.3 (Ubuntu 10.10).
Примечание:
GNU grep 2.5.4
echo "foo bar" | grep "\s"
(doesn't match)
тогда
GNU grep 2.6.3
echo "foo bar" | grep "\s"
foo bar
Вероятно, меньше проблем (поскольку \s
не документировано):
Both GNU greps
echo "foo bar" | grep "[[:space:]]"
foo bar
Мой совет: не использовать \s
... использовать [ \t]*
или [:space:]
или что-то вроде этого.