grepをファイルにリダイレクトすると機能しません。

grepをファイルにリダイレクトすると機能しません。

次のコマンドを使用して再帰的なgrepを実行しています。

grep -r "load" . > tmp.txt

しかし、Enterを押すとコマンドは実行されず、bashは追加の入力を待っています。私のオペレーティングシステムはUbuntu 12.04です。

次の2つの答えを確認しましたが、問題は解決されませんでした。

grepがリダイレクトで機能しないのはなぜですか?

tailfとgrepの出力をファイルにリダイレクトする方法

ベストアンサー1

また、Ubuntu 12.04を使用していますが、次のエラーが発生します。

$ grep -r 'test' . > tmp.txt
grep: input file `./tmp.txt' is also the output

リダイレクトは最初に拡張されるため、実行tmp.txt前に現在のディレクトリに作成されるため、grepエラーが発生します。

tmp.txtたとえば、別のパスに変更すると/tmp/tmp.txt正常に動作します。

私のgrepバージョン:

$ grep --version
grep (GNU grep) 2.10
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

おすすめ記事