Я пытаюсь понять, как бороться с пробелами в grep
. Как мне сказать grep
найти строки, содержащие пробелы или символы табуляции? Руководство ничего не говорит мне. \s
кажется, работает для пробелов, и \S
кажется, работает для непробелов, но он включает в себя все символы пробелов (пробелы и табуляции) и не работает, если я помещу его в скобки, обрабатывая обратную косую черту и \s
как отдельные персонажи.
3
2 ответа
5
Вы уверены, что?
$ printf "a \tb\na b\na\tb" | grep '.\s*.'
a b
a b
a b
$ grep -V
grep (GNU grep) 2.14
Copyright (C) 2012 Free Software Foundation, Inc.
Т.е., как показано, \s
соответствует как пробелам, так и табуляциям - я включил 'a' и 'b' только для того, чтобы выделить его.
Что вы получаете?
2
По моему опыту, grep лучше всего работает с классами символов POSIX - посмотрите, например, [[:space:]]. В некоторых программах я широко использую grep для проверки пользовательского ввода, и у меня никогда не возникало проблем, если я придерживался классов POSIX.
Однако, как отметили комментаторы, ваш вопрос не совсем понятен.