我使用ubuntu 14.4
,并尝试将grep
命令的输出重定向到文件,但我不断收到此错误:
grep: input file 'X' is also the output
我运行以下命令:
grep -E -r -o -n r"%}(.*){%" > myfile
正如错误所述,它似乎以某种方式将输入和输出解释为相同的名称/对象。我搜索了但找不到到底是什么问题?!
答案1
不可能使用相同的文件作为 的输入和输出grep
。您可以考虑以下替代方案:
临时文件
grep pattern file > tmp_file mv tmp_file file
sed
sed -i -n '/pattern/p' file
将整个文件放入变量中(对于大文件来说不是好主意)
x=$(cat file); echo "$x" | grep pattern > file
答案2
--exclude
您可以在命令中使用该字段grep
,如下所示:
grep --exclude=myfile -Eron r"%}(.*){%" > myfile
答案3
只需这样做
echo "$(grep pattern file)" > file
答案4
我在bash中找到了一种方法:
cat >> IN_OUTPUT_FILE <<< "$(grep something IN_OUTPUT_FILE)"
中的命令<<<"..."
将首先执行。