Как бы я использовал grep для одного слова в UNIX? - PullRequest
0 голосов
/ 08 октября 2010

Я хочу запустить скрипт в unix, который будет искать определенный шаблон внутри переданного аргумента. Аргумент является одним словом, во всех случаях. Я не могу использовать grep, поскольку grep работает только при поиске по файлам. Есть ли лучшая команда Unix, которая может мне помочь?

Ответы [ 6 ]

5 голосов
/ 08 октября 2010

Grep может выполнять поиск по файлам или работать с stdin:

$ echo "this is a test" | grep is
this is a test
2 голосов
/ 08 октября 2010

В зависимости от того, что вы делаете, вы можете предпочесть использовать сопоставление шаблонов bash:

# Look for text in $word
if [[ $word == *text* ]]
then
  echo "Match";
fi

или регулярные выражения:

# Check is $regex matches $word
if [[ $word =~ $regex ]]
then
  echo "Match";
fi
1 голос
/ 08 октября 2010

вы также можете использовать case/esac.Нет необходимости вызывать какие-либо внешние команды (для вашего случая)

case "$argument" in
  *text* ) echo "found";;
esac
0 голосов
/ 29 сентября 2012

Мой файл:

$ cat > log 
loga

hai how are you loga

hai

hello

loga

Моя команда:

sed -n '/loga/p' log

Мой ответ:

loga

hai how are you loga

loga
0 голосов
/ 10 октября 2010
if echo $argument | grep -q pattern
then
    echo "Matched"
fi
0 голосов
/ 08 октября 2010

Начиная с bash 3.0 он имеет встроенный оператор регулярного выражения = ~

Оформить заказ http://aplawrence.com/Linux/bash-regex.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...