web-dev-qa-db-ja.com

grep:入力ファイル「X」も出力です

私はubuntu 14.4を使用して、grepコマンドの出力をファイルにリダイレクトしようとしましたが、このエラーが発生し続けます。

grep: input file 'X' is also the output

私はこの問題を検索しましたが、ubuntu 12.4のバグであることがわかりました。説明はありません。誰かがこの問題を解決するのを手伝ってくれませんか?

次のコマンドを実行します。

grep -E -r -o -n r"%}(.*){%" > myfile
12
Kasramvd

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
    
9
jimmij

次のように、grepコマンドで--excludeフィールドを使用できます。

grep  --exclude=myfile  -Eron  r"%}(.*){%"  >  myfile
5
AaronDanielson

私はbashで方法を見つけました:cat >> IN_OUTPUT_FILE <<< "$(grep something IN_OUTPUT_FILE)"

<<<"..."のコマンドが最初に実行されます。

1
osexp2003