ファイルからgrepパターンを読む

ファイルからgrepパターンを読む

複数の大きなテキストファイルがあり、ファイルにはUNIQS.txt他のファイルの文字列のリストがあります。grep私が使用するコードは

grep -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam

何もしません。結果ファイルは空です。しかし、私がするとき

grep -F -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam

うまくいきます。grepファイル内の項目がUNIQS.txt(ファイルにない)引用符とスラッシュなしで正規表現パターンとして解釈されるとは思わないので、これは私を混乱させます。通常、ファイルからパターンを取得すると、自動的に正規表現パターンだと思いますか?

編集する:ファイルには、UNIQS.txt次の形式の改行で区切られた文字列があります。

HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783

(テンプレート名と呼ばれます)と[ファイル]EEP_VSL...タブで区切られた列が14個ほどあり、最初の列がテンプレート名なので、基本的にファイルから各テンプレートに対応する行を抽出したいと思います。

ベストアンサー1

この-fオプションは、grep がパターンを読み取るファイルを指定します。これは、コマンドラインからパターンを渡すのと似ています(-eまたは複数のパターンがある場合はオプションを使用する)。ただし、シェルから呼び出すときにシェルで拡張される特殊文字を保護するためにパターンを引用する必要があるかもしれません。

引数-Eまたは-F-P存在する場合)は、パターンが作成された構文をgrepに通知します。引数がない場合はgrepが期待されます。基本正規表現;with -E、 grep 期待拡張正規表現; -P(サポートされている場合)、grepが期待されます。パール正規表現;の場合、-Fgrepはリテラル文字列を期待します。パターンがコマンドラインから出るのかファイルから出るのかは関係ありません。

文字列は部分文字列です。a+bこれをパターンとして渡すと、埋め込みa+b+c行が一致します。指定された文字列の1つだけを含み、それ以上含まれない行を検索するには、この-xオプションを渡します。

おすすめ記事