3

Я пытаюсь понять, как бороться с пробелами в grep . Как мне сказать grep найти строки, содержащие пробелы или символы табуляции? Руководство ничего не говорит мне. \s кажется, работает для пробелов, и \S кажется, работает для непробелов, но он включает в себя все символы пробелов (пробелы и табуляции) и не работает, если я помещу его в скобки, обрабатывая обратную косую черту и \s как отдельные персонажи.

2 ответа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.

Однако, как отметили комментаторы, ваш вопрос не совсем понятен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .