2013-10-08 3 views
0

Я хочу, чтобы получить из текстового файла только 1.txt слова, которые не содержат буквы a, b и c и экспортировать его в 2.txt, но это ничего не возвращает:Как получить слова без этих символов?

grep -o [^abc]*$ 1.txt > 2.txt 

Как я получаю слова, которые не содержат a, b и c?

+0

Возможно, вам придется процитировать шаблон, между прочим. – Amber

+0

Вы просто ищете отдельные слова или строки? –

+0

возможно что-то вроде 'grep -iv '[abc]" 1.txt> 2.txt' – Cyclonecode

ответ

1

С GNU Grep вы можете использовать

grep -w -o '[^abc]*' 1.txt > 2.txt 

Соответствующие части от man являются:

-w, --word-regexp 
      Select only those lines containing matches that form whole words... 

    -o, --only-matching 
      Print only the matched (non-empty) parts of a matching line... 
+0

Странно. Не работает в моем mac –

1

Попробуйте это:

grep -w -o -P '[^abc\s]*' 1.txt > 2.txt 

Так пробелы не разрешены в середине «слова» тоже.

Я включил флаг -P слишком точно, чтобы интерпретировать регулярное выражение как Perl и разрешить \ s placeholder.

-P, --perl-regexp 
      Interpret PATTERN as a Perl regular expression. 
Смежные вопросы