^ ^ كلمة استبدال ^ على جميع المباريات في باش؟

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

  •  19-08-2019
  •  | 
  •  

سؤال

لتوضيح، أنا أبحث عن وسيلة لإجراء العالمي بحث واستبدال في الأمر السابق المستخدمة. ^word^replacement^ يبدو فقط ليحل محل المباراة الأولى.

هل هناك خيار set التي التملص لي؟

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

المحلول

وجرب هذا:

$ echo oneone
oneone
$ !!:gs/one/two/    # Repeats last command; substitutes 'one' --> 'two'.
twotwo

نصائح أخرى

ومزج جوابي <لأ href = "https://stackoverflow.com/questions/582726/alternate-way-to-trigger-reverse-i-search-without-pressing-ctrlr-in-bash/739464#739464 "عنوان =" التاريخ باش "> هنا مع جون Feminella ويمكنك القيام بذلك إذا كنت تريد اسم مستعار:

$alias dothis='`history -p "!?monkey?:gs/jpg/png/"`'
$ls *.jpg
monkey.jpg
$dothis
monkey.png

وو!! لا فقط الأمر السابق، في حين!؟ سلسلة؟ مباريات الأمر الأخير الذي يحتوي على "السلسلة".

وهذا الحل يستخدم استبدال باش سلسلة فرعية:

$ SENTENCE="1 word, 2 words";echo "${SENTENCE//word/replacement}"
1 replacement, 2 replacements

لاحظ استخدام مائلة مزدوجة يدل على "العالمي" استبدال السلسلة.

ويمكن تنفيذ هذا الحل في سطر واحد.

وفيما يلي كيفية الصعيد العالمي استبدال سلسلة في ملف اسمه "على Myfile.txt":

$ sed -i -e "s/word/replacement/g" myfile.txt

وهناك طريقة سيئة للالتفاف على هذا يمكن أن يكون شيئا من هذا القبيل:

ونريد أن أردد BAABAA بدلا من BLABLA عن طريق مبادلة L'الصورة للA

$ echo "BLABLA"   
BLABLA
$ `echo "!!" | sed 's/L/A/g'`
$(echo "echo "BLABLA" " | sed 's/L/A/g')
BAABAA
$

ولسوء الحظ هذه التقنية لا يبدو للعمل في وظائف أو الأسماء المستعارة.

وأنا اختباره على SUSE 10.1. "^ ^ كلمة استبدال ^" لا يعمل، في حين أن "^ ^ كلمة استبدال" يعمل بشكل جيد. لالمثال:

linux-geek:/home/Myworks # ls /etc/ld.so.conf   
/etc/ld.so.conf  
linux-geek:/home/Myworks # ^ls^cat  
cat /etc/ld.so.conf  
/usr/X11R6/lib/Xaw3d  
/usr/X11R6/lib  
/usr/i486-linux-libc5/lib=libc5  
/usr/i386-suse-linux/lib  
/usr/local/lib  
/opt/kde3/lib  
/opt/gnome/lib  
include /etc/ld.so.conf.d/*.conf  
linux-geek:/home/Myworks #   
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top