AWK يعطي الخطأ التالي
سؤال
و"AWK: لم يتم تعريف وظيفة systime"
ولكن systime وبنيت في القيادة
المحلول
في سولاريس، /usr/bin/awk
هو افتراضيا وصلة ل/usr/bin/oawk
، التي لا تعترف systime
كما بنيت في (أو الكثير من الملحقات الأخرى خلال الطبعة AWK 7TH). إما إعادة ربط /usr/bin/awk
إلى /usr/bin/nawk
أو استخدام nawk
مباشرة، أو الحصول على GNU AWK (gawk
) تثبيت واستخدام ذلك.
وأنظمة أخرى مثل يونيكس HP-UX، AIX قد ديهم قضايا مماثلة. ماك X (، وبالاستدلال، BSD) تثبيت غير GNU، الإصدار غير موسعة من awk
(شكرا للتصحيح، DMcKee). لينكس لا. ويستخدم GNU AWK كما الرئيسي / awk
فقط. بالطبع، يمكن بسهولة تثبيت GNU AWK على أي من هذه الأنظمة.
نصائح أخرى
ويبدو أن مسألة AWK "نكهة".
والبله (جنو AWK) يتضمن systime ()، ولكن ربما يكون الإصدار الذي تستخدمه لا ...
وإذا لم يقصد systime المكالمات لتتبع فروق التوقيت ضمن البرنامج النصي AWK نفسها، وهي حيلة للالتفاف على عدم وجود systime AWK () أن وظيفة أن يكون لتمرير قيمة هذا المتغير النظام كمتغير على سطر الأوامر AWK .
وكمثال على ذلك، على نظام بلدي يتم تثبيت كل gawk
وmawk
.
echo |mawk '{print systime()}'
وتنتج:
mawk: line 2: function systime never defined
وحين
echo |gawk '{print systime()}'
وتنتج:
1252953754
وهنا هو ما فعلته للحصول على الطابع الزمني
nawk '{system("date +%Y-%m-%d %H:%M:%S|tr -d \"\n\"");print" " $0 } '