قم بتحويل أمر sed واحد إلى أمر Textmate قابل لإعادة الاستخدام

StackOverflow https://stackoverflow.com/questions/815765

  •  03-07-2019
  •  | 
  •  

سؤال

لدي 7 أسطر من النص:

a
b
c
d
e
f
g

الآن أريد إضافة أحرف إلى نهاية كل سطر، لينتهي الأمر بما يلي:

a,
b,
c,
d,
e,
f,
g,

لقد وجدت أنه يمكنني استخدام الأمر "sed" وتشغيل التحديد من خلال sed باستخدام "التصفية من خلال الأمر" في Textmate

sed 's/$/,/'

والآن يبقى سؤال واحد:كيف يمكنني تحويل هذا إلى أمر Textmate الذي يأخذ الإدخال بطريقة ما (حتى يعرف النص الذي سيتم إلحاقه)؟

(محاولاتي في القيام بذلك باءت بالفشل)

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

المحلول

أدخل هذا في أمر داخل حزمة النص، وسيقوم بإلحاق كل ما هو موجود في الحافظة بنهاية جميع الأسطر التي تم تحديدها:

#!/bin/bash
if [[ $(pbpaste|wc -l) -eq 0 ]]
    then r=`pbpaste`
    sed 's/$/'$r'/'
    else sed 's/$/,/'
fi

يقتصر حاليًا على إلحاق سطر واحد من النص، إذا كانت الحافظة تحتوي على أكثر من سطر واحد، فسيتم تعيينها افتراضيًا على فاصلة في نهاية الأسطر المحددة.

يحرر:

لأخذ هذا أبعد قليلاً، إليك الإصدار الذي يوفر مربع حوار يطالب بإدخال السلسلة التي سيتم إلحاقها بكل سطر في التحديد:

#!/bin/bash
r=$(CocoaDialog inputbox --title "String to be appended to EOL" \
   --informative-text "Enter string:" \
   --button1 "Okay" --button2 "Cancel")

[[ $(head -n1 <<<"$r") == "2" ]] && exit_discard

r=$(tail -n1 <<<"$r")

sed "s/$/$r/"

نصائح أخرى

في نص القائمة هناك بالفعل أمر "قم بتحرير كل سطر في التحديد"افعل هذا بالضبط.سيضع المؤشر على السطر الأول ويتكرر ما تكتبه هناك في كل سطر.

قم بإنشاء أمر جديد في محرر الحزمة

#!/bin/bash
sed 's/$/,/'

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

لقد اختبرت ذلك للتو ويعمل بشكل جيد.
يمكنك أيضًا اختيار اختصار لوحة المفاتيح لجعله أكثر كفاءة.

إذا كنت على استعداد لتجنب مسار الأمر واستخدام مربع حوار البحث/الاستبدال ببساطة، فما عليك سوى القيام بما يلي:

  • قم بتمييز/تحديد الأسطر التي تريد إلحاقها
  • افتح مربع حوار البحث
  • حدد "التعبيرات العادية"
  • في الحقل "بحث"، أضف '$' (للإشارة إلى نهاية السطر)
  • في حقل "استبدال"، أضف ',' (ما تريد إلحاقه)
  • يمسك Option, سيؤدي هذا إلى تغيير "استبدال الكل" إلى "في التحديد"

يمكن تطبيق هذه التقنية بعدد من الطرق المفيدة الأخرى.على سبيل المثال، تغيير '$' ل '^' إذا كنت تريد بادئة كل سطر.

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