2012-01-05 37 views
12

GNU ngày cho phép bạn chuyển đổi chuỗi ngày như vậy:Chuỗi ký tự cho GNU Ngày chuyển đổi - làm thế nào để đọc nó từ stdin?

$ date +"%d %m %Y" -d "yesterday" 
    04 01 2012 

Có thể ống một chuỗi ngày để nó cho chuyển đổi? Tôi đã thử rõ ràng -d - như vậy:

$ echo "yesterday" | date +"%d %m %Y" -d - 

nhưng nó in ngày hôm nay thay vì ngày hôm qua.

Có thể đặt giá trị đường ống cho nó hoặc không hỗ trợ điều đó?

Cảm ơn.

+1

Tại sao downvote đột ngột, 2 năm sau khi tôi hỏi câu hỏi này? Tôi không nhớ bị downvoted, nhưng một lời giải thích là tại sao và như thế nào câu hỏi có thể được cải thiện sẽ được rất nhiều đánh giá cao ... –

Trả lời

14

Có.

echo "yesterday" | xargs date +"%d %m %Y" -d 
+0

Yup, mà các công trình. Cảm ơn! –

+4

sử dụng 'xargs -0' để làm cho nó hoạt động với ngày có dấu cách trong đó;) – caesarsol

2

Bạn có thể sử dụng `command` hoặc $(command) thay:

date +"%d %m %Y" -d $(echo "yesterday") 
24

ngày -f nói với nó để làm điều tương tự như -d trừ cho mỗi dòng trong một tập tin ... bạn có thể đặt tên tập tin thành "-" để đọc từ đầu vào tiêu chuẩn.

echo "yesterday" | date +"%d %m %Y" -f - 
1

Chỉ cần ném nó vào, trong bash:

date +"%d %m %Y" -f <(echo yesterday) 
Các vấn đề liên quan