Другое событие 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));
}
Это происходит потому, что grep
интерпретирует ---
как опцию вместо того, чтобы искать текст. Вместо этого используйте --
:
grep -- "---" your_file
Таким образом вы сообщите grep
, что остальная часть не является параметром командной строки.
Другие параметры:
grep -e
(см. решение Кента , поскольку я добавил его, когда он уже разместил его, до сих пор не заметил его): awk
(см. решение anubhava ) или sed
: sed -n '/---/p' file
-n
предотвращает печать sed
строк (его действие по умолчанию). Затем /---
соответствует тем строкам, которые содержат ---
и /p
, заставляет их печатать.
Или вы можете использовать awk:
awk '/---/' file
Или sed:
sed -n '/---/p' file
используйте параметр 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.)
для защиты шаблона, начинающегося с дефиса (-)
blockquote >
Другой способ состоит в том, чтобы избежать каждого -
с обратным слэшем.
grep '\-\-\-' your_file
Скрывается только первый -
:
grep '\---' your_file
Альтернатива без кавычек :
grep \\--- your_file