كيف يمكنني استخدام الإخراج من AWK في أمر آخر؟
سؤال
لذلك أحتاج إلى تحويل تاريخ إلى تنسيق مختلف. مع خط أنابيب باش ، سأأخذ تاريخ تسجيل الدخول إلى آخر وحدة تسجيل الدخول ، وسحب البتات ذات الصلة مع awk ، مثل ذلك:
last $USER | grep console | head -1 | awk '{print $4, $5}'
الذي يخرج: Aug 08
(4 دولارات = 5 أغسطس $ = 08 ، في هذه الحالة.)
الآن ، أريد أن آخذ "08 أغسطس" ووضعه في date
أمر لتغيير التنسيق إلى تاريخ رقمي.
الذي سيبدو مثل هذا:
date -j -f %b\ %d Aug\ 08 +%m-%d
المخرجات: 08-08
والسؤال الذي لدي هو ، كيف يمكنني إضافة ذلك إلى خط الأنابيب الخاص بي واستخدام متغيرات AWK 4 دولارات و 5 دولارات حيث يكون "08 أغسطس" في هذا التاريخ؟
المحلول
تحتاج فقط إلى استخدام استبدال الأوامر:
date ... $(last $USER | ... | awk '...') ...
سيقوم Bash بتقييم الأمر/خط الأنابيب داخل $(...)
ووضع النتيجة هناك.
نصائح أخرى
احصل على awk
للإتصال date
:
... | awk '{system("date -j -f %b\ %d \"" $4 $5 "\" +%b-%d")}'
أو استخدام استبدال العملية لاسترداد الإخراج من awk
:
date -j -f %b\ %d "$(... | awk '{print $4, $5}')" +%b-%d
أظن أنك جربت هذا بالفعل؟
last $USER | grep console | head -1 | awk | date -j -f %b\ %d $4 $5 +%b-%d
يجب أن يعمل استخدام القراد الخلفي للحصول على إخراج خط الأنابيب الطويل الخاص بك في التاريخ.
date -j -f %b\ %d \`last $USER | grep console | head -1 | awk '{print $4, $5}'\` +%b-%d