سؤال

وأعضاء نهارك سعيد،

ولدي ملف الإدخال التي لديها صفوف من الأرقام العددية (ما يقرب من 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,
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top