سؤال

كنت أتساءل فقط إذا كان بإمكان أي شخص المساعدة في كيفية القيام بما يلي باستخدام vi.

لدي ملف نصي وقد يحتوي على شيء من هذا القبيل

start of text file:
--something1.something2--
--anotherThing1.something2--
end of text file:

إذا كنت أرغب في أخذ هذا الخط وتحويله عن طريق البحث عن أي شيء يطابق التواجد الأول لـ [A-Za-z0-9] انسخ ذلك إلى المخزن المؤقت ثم ألحقه على نفس السطر قبل أول حدث لـ -

start of text file:
--something1.something2.something1--
--anotherThing1.something2.anotherThing1--
end of text file:

هل هناك أمر VI واحد للقيام بذلك؟

هتاف بن

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

المحلول

:%s/--\([a-zA-Z0-9]*\).\(.*\)--/--\1.\2.\1--/gc

أو دون طلب تأكيد لكل استبدال:

:%s/--\([a-zA-Z0-9]*\).\(.*\)--/--\1.\2.\1--/g

سوف ينتج:

--something1.something2.something1--
--anotherThing1.something2.anotherThing1--

من:

--something1.something2--
--anotherThing1.something2--

هذا إذا كنت تريد نسخ الكلمة الأولى بعد "-" حتى أولاً ". وإلحاق ". و Word وجدت قبل الأخير "-".

باستخدام فيم.

إعادة التعليقات:

ذكر أحدهم أنه لن يعمل عندما تكون هناك كلمات متعددة وما إلى ذلك.لقد اختبرت ذلك على ما يلي:

start of text file:
--something1.something2.something3.something4.something5.something6--
--anotherThing1.something2.anotherThing3.anotherThing4.anotherThing5--
end of text file:

بعد استبداله بالتعبير أعلاه:

start of text file:
--something1.something2.something3.something4.something5.something6.something1--
--anotherThing1.something2.anotherThing3.anotherThing4.anotherThing5.anotherThing1--
end of text file:

نصائح أخرى

وجرب هذا:

%s:\([A-Za-z0-9]\+\)\(\..\+\)--:\1\2.\1--:g

وحماقة المقدسة، في الوقت الذي أخذني إلى تسجيل الدخول لإضافة هذا الجواب، لنشره وبالفعل حصلت على تعليق!

%s/--\(\w*\)\.\(.*\)--/--\1.\2.\1--/g

و- ab1.cd2..yz 99-- -> --ab1.cd2..yz 99.ab1 -

وبناء على حل stefanB ولكن باستخدام الطابع الطبقات انتفى والإعداد "سحرية للغاية"، وصولي في الأمر استبدال التالية:

:%s/\v--([^.]+)\.(.*)--/--\1.\2.\1--/

واعتمادا على المتطلبات الدقيقة (ما يسمح الأحرف ل "something1" و "anotherThing1") هذه قد تكون أو لا تكون الأصح.

وأكثر شيء واحد للنظر: كل الحلول المنشورة حتى الآن تفترض أنه لا يوجد سوى التكرار واحدة من "--text.someOtherText-- النمط في كل سطر إذا لم تكن هذه هي الحالة، من جانب. (*). أن نمط لا بد من تعديل ومطلوب / ز التعديل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top