grep:输入文件“X”也是输出

grep:输入文件“X”也是输出

我使用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)"

中的命令<<<"..."将首先执行。

相关内容