Tôi sử dụng ubuntu 14.4
và cố gắng chuyển hướng đầu ra của grep
lệnh thành một tệp, nhưng tôi vẫn gặp lỗi này:
grep: input file 'X' is also the output
Tôi đã tìm kiếm vấn đề này và chỉ phát hiện ra rằng đó là một lỗi ubuntu 12.4
và không có bất kỳ mô tả nào, có ai có thể giúp tôi tìm ra vấn đề này không?
Tôi chạy lệnh sau:
grep -E -r -o -n r"%}(.*){%" > myfile
tôi thêm lệnh của tôi! cảm ơn vì gợi ý, nhưng khi tôi cố gắng sử dụng một tập tin trong đường dẫn khác thì nó không dự đoán được và tôi không thể làm điều đó!
—
Kasramvd
ví dụ với ../fi lấy cái này
—
Kasramvd
bash: ../f.txt: Permission denied
hiển thị lệnh đầy đủ, tập tin đầu vào của bạn là gì, hoặc bạn đang sử dụng đường ống?
—
jimmij
Bây giờ tôi hiểu rằng bạn thực sự đang truy cập đệ quy toàn bộ cấu trúc thư mục và muốn nối kết quả vào tệp đã tồn tại trong cấu trúc này. Vấn đề là shell (bash, zsh, anything) trước tiên thực hiện chuyển hướng và chỉ sau đó quay lại các lệnh (grep trong ví dụ này). Nó có nghĩa là
—
jimmij
grep
trong lệnh grep pattern file > file
thấy tập tin đã trống, vì vậy không có gì là đầu vào. Tuy nhiên, nếu bạn sử dụng >>
thay vì >
sau đó, tệp không trống, nhưng grep sẽ không gặp lỗi vì nó có thể dẫn đến xử lý đệ quy cùng một dòng (mẫu) nhiều lần.
grep pattern file > file
thì nó không hoạt động. Bạn không thể sử dụng cùng một tệp làm đầu vào và đầu ra cho grep.