سؤال
لدي 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
لا تنتمي إلى StackOverflow