Saya menggunakan ubuntu 14.4
, dan berusaha untuk mengarahkan output dari grep
perintah ke file, tetapi saya terus mendapatkan kesalahan ini:
grep: input file 'X' is also the output
Saya telah mencari masalah ini dan baru mengetahui bahwa itu adalah bug ubuntu 12.4
dan tidak ada penjelasan tentang, ada yang bisa membantu saya untuk mencari tahu masalah ini?
Saya menjalankan perintah berikut:
grep -E -r -o -n r"%}(.*){%" > myfile
shell
ubuntu
command-line
grep
io-redirection
Kasramvd
sumber
sumber
grep pattern file > file
maka itu tidak berhasil. Anda tidak dapat menggunakan file yang sama dengan input dan output untuk grep.bash: ../f.txt: Permission denied
grep
dalam perintahgrep pattern file > file
melihat file sudah kosong, sehingga tidak memiliki apa pun sebagai input. Namun jika Anda menggunakan>>
alih-alih>
maka file tersebut tidak kosong, tetapi grep melempar kesalahan karena hal itu dapat menyebabkan pemrosesan berulang pada garis (pola) yang sama berulang-ulang.Jawaban:
Tidak mungkin menggunakan file yang sama dengan input dan output untuk
grep
. Anda dapat mempertimbangkan alternatif berikut:file sementara
sed
letakkan seluruh file dalam variabel (bukan ide cemerlang untuk file besar)
sumber
sed -i '/pattern/!d' file
sed -i -n 's/.*\(pattern\).*/\1/p' file
sed
sintaksis juga.Anda dapat menggunakan
--exclude
bidang dalamgrep
perintah Anda seperti:sumber
myfile
unik karena hanya berlaku untuk nama file file. Anda tidak ingin melewatkan file dengan nama yang sama di direktori lain.Saya menemukan jalan di bash:
cat >> IN_OUTPUT_FILE <<< "$(grep something IN_OUTPUT_FILE)"
Perintah masuk
<<<"..."
akan dieksekusi terlebih dahulu.sumber