كيف يمكنني استخدام استبدال الخط الجديد في BSD الحوار الاقتصادي الاستراتيجي؟

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

  •  07-07-2019
  •  | 
  •  

سؤال

وتحية، وكيف يمكنني القيام بما يلي في BSD الحوار الاقتصادي الاستراتيجي؟

sed 's/ /\n/g'

ومن الرجل الصفحات أنها تنص على أن \ ن سيتم التعامل حرفيا ضمن سلسلة الاستبدال، كيف يمكنني تجنب هذا السلوك؟ هل هناك بديل؟

وأنا باستخدام ماك OS سنو ليوبارد، وأنا قد تثبيت الواش للحصول على GNU سد.

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

المحلول

في قذيفة، يمكنك القيام به:

    sed 's/ /\
/g'

وضرب مفتاح الدخول بعد مائل لإدراج سطر جديد.

نصائح أخرى

وهناك طريقة أخرى:

sed -e 's/ /\'$'\n/g'

هنا .

لسهولة الاستخدام، وأنا في كثير من الأحيان شخصيا استخدام

cr="\n" 
# or (depending version and OS)
cr="
"

sed "s/ /\\${cr}/g"

وهكذا فإنه يبقى على خط 1.

لتوسيع على إجابة @ sikmir: في باش، وهو shell الافتراضي على نظام التشغيل Mac OS X، كل ما عليك القيام به هو وضع الطابع $ أمام سلسلة مقتبسة تحتوي على تسلسل الهروب التي كنت ترغب في الحصول على تفسيرها. سوف باش تلقائيا ترجمته لك.

وعلى سبيل المثال، وإزالة جميع الإرجاع MS-DOS من جميع الملفات المصدر في lib/ وinclude/ من الكتابة:

grep -lr $'\r' lib include | xargs sed -i -e $'s/\r//'
find . -name '*-e' -delete
سوف

وBSD grep وقد فسر '\r' بشكل صحيح من تلقاء نفسها، ولكن باستخدام $'\r' لا يضر.

سوف

وBSD sed قد يساء تفسيرها 's/\r//' من تلقاء نفسها، ولكن باستخدام $'s/\r//'، أنا تجنب هذا الفخ.

لاحظ أن نتمكن من وضع $ أمام السلسلة بأكملها، وأنها سوف تأخذ الرعاية من جميع أحرف في السلسلة بأكملها.

$ echo $'hello\b\\world'
hell\world
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top