Запуск регулярного выражения в оболочке - & gt; недопустимый вариант [дубликат]

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

12
задан Techie 22 August 2014 в 10:15
поделиться

4 ответа

Это происходит потому, что grep интерпретирует --- как опцию вместо того, чтобы искать текст. Вместо этого используйте --:

grep -- "---" your_file

Таким образом вы сообщите grep, что остальная часть не является параметром командной строки.

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

  • использовать grep -e (см. решение Кента , поскольку я добавил его, когда он уже разместил его, до сих пор не заметил его):
  • использовать awk (см. решение anubhava ) или sed:
    sed -n '/---/p' file
    

-n предотвращает печать sed строк (его действие по умолчанию). Затем /--- соответствует тем строкам, которые содержат --- и /p, заставляет их печатать.

18
ответ дан Community 20 August 2018 в 08:18
поделиться

Или вы можете использовать awk:

awk '/---/' file

Или sed:

sed -n '/---/p' file
3
ответ дан anubhava 20 August 2018 в 08:18
поделиться

используйте параметр grep -e, это правильный вариант для вашего требования:

   -e PATTERN, --regexp=PATTERN
          Use PATTERN as the pattern.  This can be used to specify multiple search patterns, or to protect a pattern beginning with a hyphen (-).  (-e is specified
          by POSIX.)

для защиты шаблона, начинающегося с дефиса (-)

6
ответ дан Kent 20 August 2018 в 08:18
поделиться

Другой способ состоит в том, чтобы избежать каждого - с обратным слэшем.

grep '\-\-\-' your_file

Скрывается только первый -:

grep '\---' your_file

Альтернатива без кавычек :

grep \\--- your_file
4
ответ дан nrz 20 August 2018 в 08:18
поделиться
Другие вопросы по тегам:

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