निम्नलिखित स्क्रिप्ट आपके लिए यह करेगी:
#!/bin/bash
> out.txt
while read line; do
mytmp=$(echo $line | sed 's/.bil$//' | sed 's/^2011//' )
echo $mytmp
if [ $mytmp -lt 31 ]; then
MONTH=08
DAY=$(( $mytmp + 1))
elif [ $mytmp -lt 61 ]; then
MONTH=09
DAY=$(( $mytmp - 30 ))
elif [ $mytmp -lt 92 ]; then
MONTH=10
DAY=$(( $mytmp - 60 ))
elif [ $mytmp -lt 122 ]; then
MONTH=11
DAY=$(( $mytmp - 91 ))
elif [ $mytmp -lt 153 ]; then
MONTH=12
DAY=$(( $mytmp -121 ))
fi
echo "2011$MONTH$DAY.bil" >> out.txt
done < data
यह इस तरह काम करता है: यह नामक एक फाइल को पढ़ता है डेटा लाइन से लाइन, और एक फ़ाइल नामक में अपने उत्पादन डालता है out.txt (इसे बदलें क्योंकि यह आपको सबसे अच्छा लगता है)। पहली पंक्ति आउटपुट फ़ाइल को साफ़ करती है, फिर आरंभिक स्ट्रिंग को स्ट्रिप करते हुए डेटा फ़ाइल को पढ़ती है 2011 और फाइनल का .bil । जो बचा है, वह दिन का कोडिंग है। फिर, दिन कोडिंग के आधार पर, यह इसी महीने और दिन को निर्धारित करता है, और यह पूर्व-लंबित द्वारा स्ट्रिंग को फिर से संगठित करता है 2011 , अपील कर रहे हैं .bil , और फ़ाइल में अंतिम स्ट्रिंग डाल रहा है output.txt ।
renameउपयोगिता यहां उपयोगी हो सकती है लेकिन विवरण इसके कार्यान्वयन पर निर्भर करता है और यह अलग-अलग विकृतियों के लिए अलग है।