كيفية استبدال أسطر جديدة مع أحرف الجدولة؟
سؤال
ولدي نمط مثل أدناه
hi
hello
hallo
greetings
salutations
no more hello for you
واني اسعى الى استبدال كافة أسطر جديدة مع علامة التبويب باستخدام الأمر التالي
sed -e "s_/\n_/\t_g"
ولكن هذا لا يعمل.
ويمكن أي شخص الرجاء المساعدة؟ أنا أبحث عن حل في سد / AWK.
المحلول
ولست متأكدا حول الإخراج الذي تريد
# awk -vRS="\n" -vORS="\t" '1' file
hi hello hallo greetings salutations no more hello for you
نصائح أخرى
وهنا tr
هو أفضل، وأعتقد أن:
tr "\n" "\t" < newlines
وكما اقترح Nifle في تعليق، newlines
هنا هو اسم ملف عقد النص الأصلي.
ولأن sed
ذلك هو خط المنحى، انها أكثر تعقيدا، لاستخدامها في مثل هذه الحالة.
sed '$!{:a;N;s/\n/\t/;ta}' file
وأنت لا يمكن أن تحل محل أسطر جديدة على أساس خط سطرا مع sed
. لديك لتجميع خطوط واستبدال أسطر جديدة <م> بين م> لهم.
text abc\n <- can't replace this one
text abc\ntext def\n <- you can replace the one after "abc" but not the one at the end
وهذا السيناريو sed
يتراكم كل الخطوط، ويلغي كل أسطر جديدة لكن الاخير:
sed -n '1{x;d};${H;x;s/\n/\t/g;p};{H}'
وبالمناسبة، يا sed
النصي sed -e "s_/\n_/\t_g"
يحاول أن يقول "استبدال كافة مائلة تليها أسطر جديدة مع خطوط مائلة تليها علامات التبويب". على أحرف يأخذون على دور المحددات للأمر s
بحيث مائلة يمكن استخدامها بسهولة أكبر كما أحرف للبحث واستبدال.
paste -s
و-s سلسل جميع خطوط كل ملف الإدخال منفصل في أجل سطر الأوامر. وحرف السطر من كل سطر باستثناء السطر الأخير في كل ملف الإدخال يتم استبدال حرف جدولة، ما لم ينص على خلاف ذلك الخيار -d.
وأنت هناك تقريبا مع السيناريو الخاص بك الحوار الاقتصادي الاستراتيجي، وكنت بحاجة فقط لتغييره إلى:
sed -e "s/\n/\t/g"
وو\
ما يكفي لهروب، لا تحتاج إلى إضافة _
وتحتاج إلى إضافة /
قبل g
في نهاية السماح لااا أعلم أن هذا هو الجزء الأخير من البرنامج النصي.