প্রতি এন লাইনের পরে কোনও নতুন লাইন toোকানোর জন্য আমি কীভাবে পাঠ্য-প্রক্রিয়াকরণ সরঞ্জামগুলি ব্যবহার করতে পারি?
এন = 2 এর উদাহরণ:
ইনপুট:
sadf
asdf
yxcv
cxv
eqrt
asdf
আউটপুট:
sadf
asdf
yxcv
cxv
eqrt
asdf
প্রতি এন লাইনের পরে কোনও নতুন লাইন toোকানোর জন্য আমি কীভাবে পাঠ্য-প্রক্রিয়াকরণ সরঞ্জামগুলি ব্যবহার করতে পারি?
এন = 2 এর উদাহরণ:
ইনপুট:
sadf
asdf
yxcv
cxv
eqrt
asdf
আউটপুট:
sadf
asdf
yxcv
cxv
eqrt
asdf
উত্তর:
সাথে 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"
sed '0~2 a\ '
প্রতিটি newোকানো নতুন লাইনে একটি স্থান যুক্ত করে। এইসব একভাবে কাজ প্রতিটি লাইনে পর একটি newline যোগ করার জন্য, কোনো চেয়েছিলেন: sed '0~1 a\ '
, sed 'a\ '
, বা শুধু sed G
।
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
অন্য একটি জঞ্জাল গন্ধ:
awk '{ l=$0; getline; printf("%s\n%s\n\n", l, $0) }'
(জিএনইউ) সহ 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 '1 ; NR%2==0 {printf"\n"} '
[[ ]]
পরীক্ষা:while read line; do echo "$line"; ((lines++ % 2)) && echo; done
।