Я використовую ubuntu 14.4та намагаюся перенаправляти вихід grepкоманди в файл, але я продовжую отримувати цю помилку:
grep: input file 'X' is also the output
Я шукав цю проблему і тільки що дізнався, що це помилка, ubuntu 12.4і немає жодного опису, чи може хтось допомогти мені розібратися в цій проблемі?
Я запускаю таку команду:
grep -E -r -o -n r"%}(.*){%" > myfile
я додаю свою команду! дякую за підказку, але коли я намагаюся використовувати файл в іншому шляху, це не передбачає, і я не можу це зробити!
—
Касрамвд
наприклад з ../fi отримати це
—
Kasramvd
bash: ../f.txt: Permission denied
показати повну команду, який ваш вхідний файл, або ви використовуєте трубу?
—
jimmij
Тепер я розумію, що ви насправді репресивно зіставляєте всю структуру каталогів і хочете додати результат до файлу, який вже існує в цій структурі. Проблема полягає в тому, що оболонка (bash, zsh, що завгодно) спочатку виконує перенаправлення і лише потім повертається до команд (grep в цьому прикладі). Це означає, що
—
jimmij
grepкоманда grep pattern file > fileбачить вже порожній файл, тому не має нічого як вхідний файл. Однак якщо ви використовуєте >>замість >цього, файл не порожній, але grep видає помилку так чи інакше, оскільки це може призвести до рекурсивної обробки однієї і тієї ж лінії (шаблону) знову і знову.
grep pattern file > fileце не працює. Ви не можете використовувати той самий файл, що і для введення та виводу для grep.