コマンド出力をファイルにリダイレクトしよ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)"
のコマンドが<<<"..."
最初に実行されます。