Ответ 1
Используйте буквенный символ Tab, а не \t
escape. (Возможно, сначала нужно нажать Ctrl + V.) Кроме того, grep
не Perl 6 (или Perl 5 с модификатором /x
); пробелы значительны и будут сопоставляться буквально, поэтому даже если \t
работал A \t B
с дополнительными пробелами вокруг \t
, если бы в оригинале не было пробелов.
Что касается возвращаемого значения, знайте, что вы получаете три разных типа ответов от программы: стандартный вывод, стандартную ошибку и код выхода. Последнее значение равно 0 для успеха и не-0 для некоторой ошибки (для большинства программ, которые выполняют сопоставление, 1 означает, что не найдено, а 2 и выше означают некоторую ошибку использования). В традиционном Unix вы перенаправляете вывод из grep
, если вам нужен только код выхода; с GNU grep
вместо этого вы можете использовать опцию -q
, но имейте в виду, что это не переносимо. Как традиционные, так и GNU grep
позволяют -s
подавлять стандартную ошибку, но есть некоторые различия в том, как эти два обрабатывают; самый переносимый grep PATTERN FILE >/dev/null 2>&1
.