Подтвердить что ты не робот

Поиск вкладок с помощью grep

У меня есть файл, который может содержать такую ​​строку.

A B//Отделяется вкладкой

Я хочу вернуть true на терминал, если строка найдена, false, если значение не найдено.

когда я это делаю grep 'A' 'file.tsv', он возвращается к строке (не true/false) но

grep 'A \t B' "File.tsv"

или

 grep 'A \\t B' "File.tsv"

или

grep 'A\tB' 

или

grep 'A<TAB>B'//нажатие кнопки вкладок

ничего не возвращает.

Как выполнить поиск разделов с разделителями grep.

Как вернуть логическое значение с помощью grep.

4b9b3361

Ответ 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.

Ответ 2

Два метода: используйте опцию -P:

grep -P 'A\tB' "File.tsv"

сначала введите ctrl + v и введите вкладку

grep 'A  B' "File.tsv"

Ответ 3

Здесь удобный способ создать переменную с литеральной вкладкой в ​​качестве ее значения:

TAB=`echo -e "\t"`

Затем вы можете использовать его следующим образом:

grep "A${TAB}B" File.tsv

Таким образом, там не требуется буквальная вкладка. Обратите внимание, что при таком подходе вам понадобится использовать двойные кавычки (не одинарные кавычки) вокруг строки шаблона, иначе ссылка на переменную не будет заменена.