سؤال

يأخذ البرنامج النصي اسم ملف في النموذج r# type.txt (# هو رقم والنوع هو اثنين أو ثلاثة أحرف). أريد أن يعطيني السيناريو. ماذا علي أن أفعل للحصول عليه؟ أعتقد أنني بحاجة إلى استخدام awk و sed.

أنا أستخدم /bin /sh (وهو مطلب)

هل كانت مفيدة؟

المحلول

يمكنك استخدام AWK

$ echo R1CcC.TXT | awk '{sub(/.*[0-9]/,"");sub(".TXT","")}{print}'
CcC

أو

$ echo R1CcC.TXT | awk '{gsub(/.*[0-9]|\.TXT$/,"");print}'
CcC

وإذا كان SED هو ما تريده حقًا

$ echo R9XXX.TXT | sed 's/R[0-9]\(.*\)\.TXT/\1/'
XXX

نصائح أخرى

وأعتقد أن هذا هو ما كنت أبحث عنه.

$ echo R3cf.txt | sed "s/.[0-9]\(.*\)\..*/\1/"

cf

إذا كان TXT دائمًا في الحالة العليا ويبدأ اسم الملف دائمًا بـ R ، فيمكنك فعل شيء مثل.

$ echo R3cf.txt | sed "s/R[0-9]\(.*\)\.TXT/\1/"

يمكنك استخدام القشرة فقط (اعتمادًا على ما هي قذيفة bin/sh هو:

f=R9ABC.TXT
f="${f%.TXT}"       # remove the extension
type="${f#R[0-9]}"  # remove the first bit
echo "$type"        # ==> ABC
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top