26

このような行を含む可能性のあるファイルがあります。

A B//タブ区切り

値が見つからないtrue場合、行が見つかった場合は端末に戻りたいです。false

すると grep 'A' 'file.tsv'、行に戻ります(真/偽ではありません)が、

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

また

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

また

grep 'A\tB' 

また

grep 'A<TAB>B'//タブボタンを押す

何も返しません。

grep でタブ区切りの値を検索するにはどうすればよいですか。

grep でブール値を返すにはどうすればよいですか。

4

3 に答える 3

30

エスケープTabではなく、リテラル文字を使用してください。(最初に+\tを押す必要があるかもしれません。) また、Perl 6 (または修飾子付きの Perl 5) ではありません。スペースは重要であり、文字通り一致するため、余分なスペースを使用しても、元のスペースが実際に存在しない限り、そうではありません。CtrlVgrep/x\tA \t B\t

戻り値については、プログラムから 3 種類の応答 (標準出力、標準エラー、および終了コード) が返されることを知っておいてください。後者は、成功の場合は 0 であり、何らかのエラーの場合は 0 以外です (マッチングを行うほとんどのプログラムでは、1 は見つからないことを意味し、2 以上は何らかの使用エラーを意味します)。grep従来の Unix では、終了コードのみが必要な場合は出力をリダイレクトします。GNUでは、代わりにオプションをgrep使用できますが、-q移植性がないことに注意してください。従来型と GNU はどちらも標準エラーを抑制することがgrepでき-sますが、両者の処理方法にはいくつかの違いがあります。最もポータブルですgrep PATTERN FILE >/dev/null 2>&1

于 2012-04-06T01:44:08.307 に答える
18

2 つの方法: -P オプションを使用します。

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

最初に ctrl+v を入力し、タブを入力します

grep 'A  B' "File.tsv"
于 2012-04-06T02:14:36.260 に答える