سؤال

لدي TextFile ضخم، حوالي 400.000 خطوط 80 الكاراشيرز على نطاق واسع على ليوكس.

تحتاج إلى "تتكشف" الملف، دمج أربعة أسطر في واحد ينتهي بعد 1/4 من الخطوط، كل سطر 80 * 4 الكاراشيرين.

أي اقتراحات؟

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

المحلول

طريقة أسهل للقيام بذلك مع AWK سيكون:

awk '{ printf $0 } (NR % 4 == 0) { print }' filename

على الرغم من أنك إذا كنت ترغب في الحماية من النهاية بدون خط جديد، فإنه يحصل أكثر تعقيدا:

awk '{ printf $0 } (NR % 4 == 0) { print } END { if (NR % 4 != 0) print }' filename

نصائح أخرى

perl -pe 'chomp if (++$i % 4);'

آمل أن أفهم سؤالك بشكل صحيح. لديك خط إدخال مثل هذا (باستثناء خطوطك أطول):

abcdef
ghijkl
mnopqr
stuvwx
yz0123
456789
ABCDEF

تريد إخراج مثل هذا:

abcdefghijklmnopqrstuvwx
yz0123456789ABCDEF

يجب أن يقوم برنامج AWK التالي بذلك:

{ line = line $0 }
(NR % 4) == 0 { print line; line = "" }
END { if (line != "") print line }

تشغيله مثل هذا:

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