سؤال
يأخذ البرنامج النصي اسم ملف في النموذج 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
لا تنتمي إلى StackOverflow