إزالة القولون باستخدام VI
سؤال
وأنا أحاول القيام البحث والاستبدال في VI لإزالة الطابع الزمني. وعادة ما تفعل ذلك في السادس باستخدام الأمر S ولكن كيف أقول VI أحتاج لإزالة كولون عند جانبها من هيكل الأمر VI نفسها
وEX: "ككككك ككككك 24:00:00 CDT"
وحاول
وs:24:00:00 CDT::g
وs:"24:00:00 CDT"::g
وs:/:::g
وهو محل تقدير أي مساعدة.
المحلول
وعادة، والسادس يستخدم الحرف الذي يلي الحرف الأمر كما المفرق.
وجرب هذا:
s!24:00:00 CDT!!g
نصائح أخرى
والمشكلة هنا ليست مطابقة القولون، ولكن أن كنت قد علمت أن همة يجب استخدام القولون لفصل انها التعابير المنطقية. هذا غير صحيح.
وAWK / السادس / بيرل / روبي (وغيرها الكثير) تمكنك من تحديد محدد wahtever الذي تريده. هذه الشخصية هي واحدة بعد حرف الأمر (في حالتنا لS)، على سبيل المثال:
s/hello/there/
s:hello:there:
s@hello@there@
وكلها نفس التعابير المنطقية، فقط مع المحددات المختلفة. هذا flexability يعني أنه إذا كنت غالبا ما تستخدم /، ولكن تحتاج بعد ذلك لمطابقة / في التعبير المعتاد، ثم يمكنك التبديل فقط لبعض محدد آخر، على سبيل المثال:
sMhel/loMthereM
وعلى الرغم من "M" قد لا يكون أفضل خيار عندما يحتوي التعبير المعتاد النص - أنها تعتمد على أسلوب حياتك وماذا كنت مطابقة حقا
ويمكنك حتى استخدام الأقواس. لالتعابير المنطقية واحد هو:
s[hello]
أو
s(hello)
وأعتقد أن للبحث واستبدال النمط الذي يمكن استخدام s[hello][there]
أو ربما حتى s[hello](there)
. ولكن هذه الجملة الأخيرة حول الأقواس هي نصف تخمين تذكرت عندما كنت من alst بيرل المستخدمة.
في نسختي من السادس، أستطيع أن أفعل ما يلي لإزالة الفواصل من خط. YMMV.
:s/://g
وs/\d\+:\d\+:\d\+ CDT//g
يعمل بالنسبة لي:
والمحتوى الأولي:
xxxxx xxxxx 24:00:00 CDT
وبعد الأوامر:
xxxxx xxxxx
وإذا كنت تريد أن تتأكد من أنها سوف تؤثر فقط الطوابع (كما هو، أن التعابير المنطقية فوق تغيير أي رقم من الأرقام> 1)، استخدم
s/\d\d:\d\d:\d\d CDT//g
وحيث ز النهائي يتغير كافة تواجدات نمط، وليس فقط أول واحد.
إذا كان لديك أكثر من توقيت واحد في القائمة، مجموعة منهم:
:s/\d\+:\d\+:\d\+^Y \(CDT\|UDT\)//g
وانها ليست حقا جزءا من الأمر، لأنه يجب أن تتيح لك استخدام أي محدد تريد.
وكنت على الارجح محاولة: -
%s/\d\{2}:\d{2}:\d{2}//g