Сценарии оболочки: "grep -w", чтобы не выбирать слова, разделенные знаком "-" - PullRequest
0 голосов
/ 17 июня 2020

У меня 3 слова.

abcd-1234
abcd-abcd
abcd

Можно ли выбрать / распечатать 3-е слово «abcd» с помощью grep -w или аналогичной команды?

Ответы [ 2 ]

1 голос
/ 17 июня 2020

И почему вы хотите достичь этого с помощью -w, если вы можете просто достичь этого с помощью -v ( AKA --invert-match):

grep -v "-" data.txt

Вывод:

abcd

Хорошо, -w получает только слова целиком, но дефис не всегда разделяет слово. Если вам не нравится дефис, лучше всего сказать, что вам не нравится дефис (отсюда -v "-").

1 голос
/ 17 июня 2020

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

grep '[a-zA-Z]'

подробнее c, алфавит с начала:

echo "abcd-1234" | grep -o '^[a-zA-Z]*'

это должно быть хорошо для данных примеров,

попробуйте это относительно вашего комментария

data.txt

abcd-1234

abcd-4678

abcd

abcd -as334s

abcd-abcd

cat data.txt | grep -ow '^[a-zA-Z]*' | sort -u
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...