প্রতিটি এন লাইনের পরে একটি নতুন লাইন ?োকান?


24

প্রতি এন লাইনের পরে কোনও নতুন লাইন toোকানোর জন্য আমি কীভাবে পাঠ্য-প্রক্রিয়াকরণ সরঞ্জামগুলি ব্যবহার করতে পারি?

এন = 2 এর উদাহরণ:

ইনপুট:

sadf
asdf
yxcv
cxv
eqrt
asdf

আউটপুট:

sadf
asdf

yxcv
cxv

eqrt
asdf

উত্তর:


28

সাথে awk:

awk ' {print;} NR % 2 == 0 { print ""; }' inputfile

সঙ্গে sed( GNUএক্সটেনশন):

sed '0~2 a\\' inputfile

সাথে bash:

#!/bin/bash
lines=0
while IFS= read -r line
do
    printf '%s\n' "${line}"
    ((lines++ % 2)) && echo
done < "$1"

2
পাটিগণিত মূল্যায়ন সরাসরি শর্ত হিসাবে ব্যবহার করা যেতে পারে জন্য কোন প্রয়োজন [[ ]]পরীক্ষা: while read line; do echo "$line"; ((lines++ % 2)) && echo; done
manatwork

1
সচেতন থাকুন যে উপরের ডকুমেন্টেড কমান্ড sed '0~2 a\ 'প্রতিটি newোকানো নতুন লাইনে একটি স্থান যুক্ত করে। এইসব একভাবে কাজ প্রতিটি লাইনে পর একটি newline যোগ করার জন্য, কোনো চেয়েছিলেন: sed '0~1 a\ ', sed 'a\ ', বা শুধু sed G
একিউম্যানাস


4
sed n\;G <infile

... আপনার যা দরকার তা হল ...

উদাহরণ স্বরূপ:

seq 6 | sed n\;G

আউটপুট:

1
2

3
4

5
6

... (এবং একটি ফাঁকা এছাড়াও 6 অনুসরণ করে) ... বা ...

seq 5 | sed n\;G

আউটপুট:

1
2

3
4

5

(এবং কোনও ফাঁকা 5 অনুসরণ করে না)

যদি সর্বশেষ লাইনের ক্ষেত্রে খালি সর্বদা বাদ দেওয়া উচিত:

sed 'n;$!G' <infile

2

অন্য একটি জঞ্জাল গন্ধ:

awk '{ l=$0; getline; printf("%s\n%s\n\n", l, $0) }'

1
"দৈর্ঘ্য এবং সামগ্রীর কারণে এই উত্তরটি নিম্ন-মানের হিসাবে চিহ্নিত করা হয়েছিল।" আমি এটি গ্রহণ করব ... ;-)
হউক লেগেইজ

1

সেড (জিএনইউ)

(জিএনইউ) সহ sed:

sed '0~2G'

সংক্ষিপ্ত (এন = 100 এর জন্য কুরুচিপূর্ণ):

sed 'n;G'

ম্যান সেড ব্যাখ্যা করেছেন ~

প্রথম ~ পদক্ষেপটি প্রথম ধাপের
সাথে প্রথম শুরু করে প্রতিটি ধাপের লাইনটি মিলান। উদাহরণস্বরূপ, `` সেড-এন 1 ~ 2 পি '' ইনপুট স্ট্রিমের সমস্ত বিজোড়-সংখ্যাযুক্ত লাইনগুলি মুদ্রণ করবে এবং দ্বিতীয়টি দিয়ে শুরু করে 2 ~ 5 ঠিকানা প্রতি পঞ্চম লাইনে মিলবে। প্রথম শূন্য হতে পারে; এই ক্ষেত্রে, সেড এমনভাবে কাজ করে যা এটি পদক্ষেপের সমান। (এটি একটি এক্সটেনশন))

সেড (অন্যান্য)

অন্যান্য সেডের সাথে (নতুন লাইন গণনা করুন):

sed -e 'p;s/.*//;H;x;/\n\{2\}/{g;p};x;d'

অথবা, আরও বহনযোগ্য হিসাবে লেখার জন্য (সেডের কিছু সংস্করণের জন্য মন্তব্যগুলি সরান):

sed -e '             # Start a sed script.
         p            # Whatever happens later, print the line.
         s/.*//       # Clean the pattern space.
         H            # Add **one** newline to hold space.
         x            # Get the hold space to examine it, now is empty.
         /\n\{2\}/{   # Test if there are 2 new lines counted.
             g        # Erase the newline count.
             p        # Print an additional new line.
           }          # End the test.
         x            # match the `x` done above.
         d            # don't print anything else. Re-start.
       '              # End sed script.

awk

সাথে awk, সম্ভবত:

awk '1 ; NR%2==0 {printf"\n"} '
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.