بفرض لديك ملف نصي يتضمن أسطراً على النحو التالي:
،بلا بلا بلا بلا... بلا
كيف يمكنني نقل الفاصلة (،) من بداية السطر إلى نهايته ليصبح
بلا بلا بلا بلا... بلا،
باستخدام sed؟
وهل يمكن تنفيذ مثل هذه المهمة من داخل سطر محررات النصوص أمثال GEdit و Geany؟
السلام عليكم أخ أنس.
بالنسبة ل sed فأقترح التالي حيث input اسم الملف الذي يحوي الأسطر و output هو الملف الجديد
sed -e "s/^،\(.*\)/\1،/g" input > output
هنا باعتبار المثال الذي أعطيتَه، أي نقل الفاصلة إلى آخر السطر. العكس سيكون مشابها باختلاف بسيط في الأمر.
وعليكم السلام ورحمة الله، شكراً جزيلاً لك، لكن الناتج يبدو على الشكل التالي:
بلا بلا بلا بلا... بلا
،
أي أن الفاصلة تظهر في سطر جديد.
ملاحظة أخرى، ماذا لو كان الحرف هو النقطة؟ أعتقد أن صيغة الأمر ستختلف، فللنقطة مدلول برمجي هنا، أليس كذلك؟
فعند محاولتي استبدال الفاصلة بالنقطة كانت النتائج غير متوقعة.
عندي تظهر النقطة على نفس السطر، إصدارات sed تختلف قليلا. لا أعرف حقيقة لماذا تظهر في السطر الموالي.
بخصوص النقطة فيجب إضافة \ أمامها حتى لا تفسر بدلالتها البرمجية. فيصبح الأمر هكذا:
sed -e "s/^\.\(.*\)/\1\./g" input > output
شكراً لك، نجح الأمر مع النقطة لكن مع ظهور نفس المشكلة: النقطة في سطر جديد.
ما الإصدار الذي تستخدمه؟ عندي الإصدار sed (GNU sed) 4.2.2.