Перенаправление grep в файл не работает

Перенаправление grep в файл не работает

Я выполняю рекурсивный grep с помощью следующей команды:

grep -r "load" . > tmp.txt

Однако, когда я нажимаю Enter, команда не выполняется, и bash ждет дополнительных вводов. Моя ОС — Ubuntu 12.04.

Я проверил следующие два ответа, но они не смогли решить мою проблему.

Почему 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>.

Связанный контент