macos - ম্যাকোএস এ নতুন লাইন দিয়ে কমা প্রতিস্থাপন?



unix sed (8)

আমার আইডি এর একটি ফাইল রয়েছে যা কমা বিচ্ছিন্ন। আমি একটি নতুন লাইন দিয়ে কমা প্রতিস্থাপন করার চেষ্টা করছি। আমি চেষ্টা করেছিলাম:

sed 's/,/\n/g' file

কিন্তু এটা কাজ করছে না. আমি কি অনুপস্থিত?


Answer #1

FWIW, নিম্নোক্ত লাইন উইন্ডোতে কাজ করে এবং আমার পাথের ভেরিয়েবলগুলিতে একটি নিউলাইন সহ সেমিকোলন প্রতিস্থাপন করে। আমি আমার গিট বিন নির্দেশিকা অধীনে ইনস্টল সরঞ্জাম ব্যবহার করছি।

echo %path% | sed -e $'s/;/\\n/g' | less

Answer #2

আমরা sed এই এছাড়াও করতে পারেন।

আপনি এই চেষ্টা করতে পারেন,

sed -i~bak 's/\,/\n/g' file

-i - ফাইলে সংশোধন পরিবর্তন করবে। এই বিকল্পটি ব্যবহার করার জন্য সতর্ক থাকুন।

আমি এই আপনি সাহায্য করবে আশা করি।


Answer #3

এটি সম্পূর্ণ করতে, এটিও কাজ করে:

echo "a,b" | sed "s/,/\\$(echo -e '\n\r')/"

Answer #4

দৃশ্যত \r মূল!

$ sed 's/, /\r/g' file3.txt > file4.txt

এই রূপান্তর:

ABFS, AIRM, AMED, BOSC, CALI, ECPG, FRGI, GERN, GTIV, HSON, IQNT, JRCC, LTRE,
MACK, MIDD, NKTR, NPSP, PME, PTIX, REFR, RSOL, UBNT, UPI, YONG, ZEUS

এটার জন্য:

ABFS
AIRM
AMED
BOSC
CALI
ECPG
FRGI
GERN
GTIV
HSON
IQNT
JRCC
LTRE
MACK
MIDD
NKTR
NPSP
PME
PTIX
REFR
RSOL
UBNT
UPI
YONG
ZEUS

Answer #5

ম্যাকওএস ভিন্ন, ম্যাক এ sed সঙ্গে এই সমস্যা সমাধানের দুটি উপায় আছে

  • প্রথমে, \'$'\n'' প্রতিস্থাপন করুন \n এটি MacOS এ কাজ করতে পারে:

    sed 's/,/\'$'\n''/g' file
    
  • দ্বিতীয়, শুধু একটি খালি লাইন ব্যবহার করুন:

    sed 's/,/\
    /g' file
    
  • গীত। দ্বারা পৃথক পরিসীমা মনোযোগ দিতে '


Answer #6

যদি আপনার sed ব্যবহার সম্পূর্ণরূপে প্রতিস্থাপন এক্সপ্রেশন (যেমন খনি হতে থাকে) হতে থাকে তবে আপনি এটির পরিবর্তে পার্ল -pe ব্যবহার করতে পারেন

$ echo 'foo,bar,baz' | perl -pe 's/,/,\n/g'
foo,
bar,
baz

Answer #7

শুধু সাফাই করার জন্য: OSX এ সিডির ম্যান পৃষ্ঠাটি (10.8; ডারউইন কার্নেল সংস্করণ 12.4.0) বলছে:

[...]

Sed নিয়মিত এক্সপ্রেশন

 The regular expressions used in sed, by default, are basic regular expressions (BREs, see re_format(7) for more information), but extended
 (modern) regular expressions can be used instead if the -E flag is given.  In addition, sed has the following two additions to regular
 expressions:

 1.   In a context address, any character other than a backslash (``\'') or newline character may be used to delimit the regular expression.
      Also, putting a backslash character before the delimiting character causes the character to be treated literally.  For example, in the
      context address \xabc\xdefx, the RE delimiter is an ``x'' and the second ``x'' stands for itself, so that the regular expression is
      ``abcxdef''.

 2.   The escape sequence \n matches a newline character embedded in the pattern space.  You cannot, however, use a literal newline charac-
      ter in an address or in the substitute command.

[...]

তাই আমি অনুমান করেছি যে একটিকে ট্র ব্যবহার করতে হবে - যেমন উল্লিখিত - বা নিফটি

sed "s/,/^M
/g"

দ্রষ্টব্য: আপনি vi এডিটরতে '^ এম' পেতে < ctrl> -v, < return> টাইপ করতে হবে


Answer #8

$'string' ব্যবহার করুন

আপনি একটি পেতে ব্যাকস্ল্যাশ-পালানো আক্ষরিক নতুন লাইন প্রয়োজন sed। কমপক্ষে, $'' স্ট্রিংগুলি একটি বাস্তব নতুন লাইনের সাথে প্রতিস্থাপন করবে, তবে তারপরে আপনাকে ব্যাকল্ল্যাশটি দ্বিগুণ করতে হবে যা নতুন লাইন থেকে পালাবার জন্য দেখতে হবে, উদাহরণস্বরূপ

echo "a,b" | sed -e $'s/,/\\\n/g'




sed