Giả sử trong ngày làm việc của bạn, bạn liên tục gặp phải dạng đầu ra được chia cột sau đây từ một số lệnh trong bash (trong trường hợp của tôi là thực thi svn st
trong thư mục làm việc Rails của tôi):
? changes.patch
M app/models/superman.rb
A app/models/superwoman.rb
để làm việc với đầu ra của lệnh của bạn - trong trường hợp này là tên tệp - một số loại phân tích được yêu cầu để cột thứ hai có thể được sử dụng làm đầu vào cho lệnh tiếp theo.
Những gì tôi đã làm là sử dụng awk
để lấy ở cột thứ hai, ví dụ như khi tôi muốn xóa tất cả các tệp (không phải đó là một usecase điển hình :), tôi sẽ làm:
svn st | awk '{print $2}' | xargs rm
Vì tôi gõ cái này rất nhiều, một câu hỏi tự nhiên là: có cách nào ngắn hơn (vì thế mát hơn) để hoàn thành việc này trong bash không?
LƯU Ý: Những gì tôi đang hỏi về cơ bản là một câu hỏi lệnh shell mặc dù ví dụ cụ thể của tôi nằm trong quy trình làm việc svn của tôi. Nếu bạn cảm thấy quy trình làm việc đó thật ngớ ngẩn và đề xuất một cách tiếp cận khác, tôi có thể sẽ không bỏ phiếu cho bạn, nhưng những người khác có thể, vì câu hỏi ở đây thực sự là làm thế nào để có được đầu ra lệnh cột thứ n trong bash, theo cách ngắn nhất có thể . Cảm ơn :)