كيفية استبدال أسطر جديدة مع أحرف الجدولة؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

ولدي نمط مثل أدناه

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 في نهاية السماح لااا أعلم أن هذا هو الجزء الأخير من البرنامج النصي.

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