شيل لقراءة وطباعة جزء من سلسلة
سؤال
وأعضاء نهارك سعيد،
ولدي ملف الإدخال التي لديها صفوف من الأرقام العددية (ما يقرب من 2000 الصفوف) أريد أن استخراج خارج "ثاني إلى الرقم ثمانية من حق" كل صف من سلسلة رقمية في ملف منفصل، مع النتيجة التي تفصلها فاصلة كما هو مبين.
وعلى سبيل المثال: input.txt
و+00000000000001303275310752
و+00000000000001827380519015
و+00000000000000800081610361
و+00000000000000449481894004
و+00000000000000449481894004
و+00000000000001812612607514
والنتيجة المتوقعة: newfile.txt
7531075
8051901
8161036
8189400
8189400
1260751
وانا التخمين شيء من هذا القبيل "الحوار الاقتصادي الاستراتيجي" يمكن استخدامها في حل مشكلتي، ولكن لست متأكدا تماما كيفية التوجه نحو تحقيق هذا الهدف. أنا متصل آلة على التوالي على سولاريس 5.10 نقدر اذا كان شخص ما يمكن أن توجه لي مع شرح موجز.
والتحيات،
والمبتدئين.
المحلول
لإدخال عرض ثابت، في محاولة:
cut -c19-26 input.txt | sed 's/$/,/'
والذي هو القول، استخراج 19 إلى الطابع ال26 النص المدخلات ثم قم باستبدال نهاية السطر بفاصلة.
إذا كان لديك خطوط الطول المتغير، سوف تحتاج إلى شيء مختلف قليلا.
نصائح أخرى
ويمكنك اقتطاع الأصفار البادئة مع:
sed 's/^0*//g'
وهكذا شيئا مثل:
sed 's/^0*//g' input.txt | sed 's/$/,/'
ويجب أن تعمل.
وجرب:
perl -pe 's/^.*(\d{7})\d$/$1,/' < input.txt
وأو إذا كنت لا تحب التعابير العادية:
perl -pe '$_ = substr($_,-9,-2) . ",\n"' < input.txt
وهذا العمل لأي خط طول ثابت أو متغير.
وهنا هو الحل في بيثون، وينبغي أن تكون بديهية:
$ cat data2
00000000000001303275310752
00000000000001827380519015
00000000000000800081610361
00000000000000449481894004
00000000000000449481894004
00000000000001812612607514
$ cat digits.py
import sys
for line in sys.stdin:
print '%s,' % (line[-9:-2])
$ python digits.py < data2
7531075,
8051901,
8161036,
8189400,
8189400,
1260751,