كيف يمكنني استخدام الإخراج من AWK في أمر آخر؟

StackOverflow https://stackoverflow.com/questions/3452339

  •  27-09-2019
  •  | 
  •  

سؤال

لذلك أحتاج إلى تحويل تاريخ إلى تنسيق مختلف. مع خط أنابيب باش ، سأأخذ تاريخ تسجيل الدخول إلى آخر وحدة تسجيل الدخول ، وسحب البتات ذات الصلة مع 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top