đưa thêm một input stream với dòng sau:AWK: thực hiện CURL trên mỗi dòng và phân tích kết quả
123
456
789
098
...
Tôi muốn gọi
curl -s http://foo.bar/some.php?id=xxx
với xxx là số cho mỗi dòng, và mọi lúc để cho một tập lệnh awk lấy một số thông tin từ đầu ra curl được ghi vào luồng đầu ra. Tôi tự hỏi nếu điều này là có thể mà không sử dụng awk "hệ thống()" gọi theo cách sau:
cat lines | grep "^[0-9]*$" | awk '
{
system("curl -s " $0 \
" | awk \'{ #parsing; print }\'")
}'
Tôi thấy câu hỏi này thú vị trong các trường hợp đầu vào đến từ luồng "thực", không phải tệp. Ví dụ: thiết bị cảm biến tạo dữ liệu (đường) định kỳ, ví dụ: trên/dev/ttyUSB0. Trong những trường hợp như vậy, các câu trả lời được đề xuất (đọc từ một tệp) chỉ áp dụng nếu lưu trữ dữ liệu từ luồng một tệp tạm thời và định kỳ xử lý tệp (nếu dữ liệu đến khi xử lý?). Nhưng cách tiếp cận trực tiếp hơn (sử dụng đường ống) có thể tốt hơn ... –
Ghi chú 'mèo | grep | awk' có thể được đơn giản hóa thành 'awk '/^[0-9] + $/{}' file'. Ngoài ra, bạn muốn làm loại phân tích cú pháp nào? Có lẽ nó không phải là cần thiết để sử dụng 'awk' ở tất cả và một 'while read' loop suffices. – fedorqui