Синтаксис grep отличается от регулярного выражения?

Это звучит так, как будто вы просто загрузили tarball mongodb и установили его без всех зависимостей.

Вы должны либо загрузить файл deb, либо настроить apt, чтобы получить deb из 10gen-репозиториев. См. Здесь.

Ваша ошибка, скорее всего, связана с тем, что вам не хватает пакета xulrunner, который является частью материала mozilla / firefox. Mongo использует механизм javascript, который является частью firefox.

Одно замечание: из-за того, что манго зависит от xulrunner, xulrunner зависит от множества других вещей, будьте готовы установить множество кажущихся ненужными пакетов, чтобы запустить mongo.

1
задан 22 September 2013 в 16:10

1 ответ

На странице man grep:

grep ищет именованные входные ФАЙЛЫ (или стандартный ввод, если ни один файл не назван, или если в качестве имени файла указан один дефис-минус (-)) для строк, содержащих совпадение с данным PATTERN.

Насколько я знаю, grep не имеет возможности редактировать строки, которые он соответствует; Для этого я использовал бы sed или, возможно, tr. Любое из следующего должно получить то, что вы хотите:

cat /var/log/dpkg.log | grep 'remove' | sed 's/.*remove \([^:]*\):.*/\1/'
cat /var/log/dpkg.log | grep 'remove' | sed -E 's/.*remove ([^:]*):.*/\1/'
cat /var/log/dpkg.log | sed -n '/remove/s/.*remove \([^:]*:\).*/\1/p'
cat /var/log/dpkg.log | sed -nE '/remove/s/.*remove ([^:]*):.*/\1/p'

Я честно не уверен, что ваш (?<=remove)(.*?)(?=:) пытается выполнить. В регулярном выражении скобки используются для определения групп захвата: вы можете видеть, что я использовал их в командах sed здесь - там все согласованное будет заменено содержимым группы захвата /1, первая группа - быть определено.

0
ответ дан 24 May 2018 в 17:43
  • 1
    Я просто поставил их вместе с методом проб и ошибок, я не знаю, даже если он многословный, но он сработал. Спасибо за разъяснение о sed и awk, я слышал, что awk может творить чудеса – kenn 22 September 2013 в 20:41

Другие вопросы по тегам:

Похожие вопросы: