1
に失敗し、私が実行しようとしているコマンドは単純化のためGrepの - スペース
fgrep -h -f "list.csv" input.csv > output.csv
で、リストファイルを2つの項目が含ま言うことができます:
content1
「コンテンツ2を"
これらは両方とも入力ファイルで一致します。たとえば、私が入力した場合
fgrep -h "c o n t e n t 2" input.csv
私は結果を受け取ります。しかし、私が最初のコマンドを使用すると、それはcontent1にのみ一致します。
これは、リストファイルにスペースを含む文字列を引用符で囲んだ結果です。 grepを引用符内の内容と一致させるにはどうしたらよいですか?
リストファイルを手動で作成するのではなく、大きなファイルです。私は引用符を取り除く方法を見つけるか、fgrepから引用符を取り除く必要があると思います。 – ibav
残念ながらそうです。あなたのコマンドを1行にするには、 'sed'を使います:' sed 's/^ "\(。* \)" $/\ 1 /' input.csv'は、引用符で囲みます。私はあなたのコマンドに "$(...)"か何かを介して "コマンド補間"をどのように "注入"するかを理解するためにシェルパイプでは余りにも錆びていますが、それを理解できると確信しています。 –
この回答は、ファイルに引用符が含まれていない場合、grepが正しく機能するという点で正しいです。リストファイルからすべての引用符を削除するにはtr -d '"'というコマンドを使い、結果は正確でした。 – ibav