2015-07-16 5 views
1

Я хотел отображать только уникальные слова в качестве вывода. Как определить выражение grep?Показать все слово из строки

strings file.txt |grep (filter to display only whole words) | unique

+0

Вы можете показать некоторые данные вашего файла file.txt? иначе мы не сможем дать правильный ответ. – Kent

+0

команда strings будет извлекать весь строковый символ, я передаю результат команде grep, где я хотел получить результат всего целого слова [то есть., Если строка содержит больше места, слова между пространством должны отображаться]. Текстовый файл слишком большой, поэтому я не могу поделиться. Надеюсь, он объяснит ..! – jOSe

+1

Вставьте некоторые данные, пожалуйста. Например. 'foo bar blah' и' foo, blah, bar! 'и' foo! бар. blah! 'разные. и ваша проблема связана не только с grep part, 'uniq' работает только для отсортированного файла. так, опять же, вставьте примеры входных данных, а также ожидаемый результат! – Kent

ответ

0
cat file.txt | sed -e 's/\s\+/\n/g' | sort -u 
+0

Кошка покажет не строковый символ. Меня интересуют только строки. Поэтому я заменил вашу кошку командами строк. Серийная линия отображения с пространством. Мне нужно сломать линию, если она получит пространство и отобразится на весь мир. Пример строки «Hello world, basic» - ожидаемый результат: Hello, world ,, basic – jOSe

+0

Бесполезное использование 'cat'. – Jahid

0

Похоже, вам нужно перевести "пробелы" в новой строкой:

strings file.txt | tr '[:blank:]' '\n' | sort -u 
+0

Да Мне нужно перевести пробел или вкладку в символы новой строки. Я пробовал вашу команду. Но он по-прежнему отображает пробелы в некоторой строке вывода – jOSe

0

Это должно работать:

s="sample word sample word samples" 
echo "$s" |grep -oE "\b\w+\b"|sort -u 

Выход:

sample 
samples 
word 
+0

Спасибо. Это то, чего я ожидаю. Как мы можем использовать один и тот же метод в python? – jOSe

+0

@jOSe нравится запускать этот код с подпроцессом или os.system()? – Jahid

+0

подпроцесс будет делать добро :) – jOSe

Смежные вопросы