কোনও ফাইলের প্রথম শব্দের সাথে সমস্ত লাইন উপসর্গ করুন


3

আমি কোনও ফাইলের প্রথম শব্দটি ব্যবহার করে কোনও ফাইলের সমস্ত লাইন (প্রথম লাইন ব্যতীত) উপসর্গ করতে চাই।

ইনপুট:

x.o: x.cpp /u/a.h 
/b.h \
/c.h \

আউটপুট:

x.o: x.cpp /u/a.h \
x.o: /b.h \
x.o: /c.h \

কেউ দয়া করে উপরের সেড ব্যবহার করে কীভাবে সমাধান করবেন আমাকে সহায়তা করতে পারেন?

উত্তর:


3

আপনি এটি জিএনইউ সেড দিয়ে এটি করতে পারেন:

sed -r '1 {h; s/ .*//; x}; 1!{G; s/([^\n]*)\n(.*)/\2 \1/}' infile

বা পৃথক লিপি হিসাবে:

parse.sed

1 {                         # run block for first line only
  h                         # save copy of line in hold space
  s/ .*//                   # remove redundant part
  x                         # swap prefix to hold space
}

1! {                        # when not first line
  G                         # append prefix to pattern space
  s/([^\n]*)\n(.*)/\2 \1/   # reorganize so prefix is the prefix
}

এটি এইভাবে চালান:

 sed -rf parse.sed infile

আউটপুট:

x.o: x.cpp /u/a.h 
x.o: /b.h \
x.o: /c.h \

+1 আমি সর্বদাই তুচ্ছ তাত্পর্যপূর্ণ স্ক্রিপ্টগুলি দ্বারা প্রভাবিত।
— গ্লেন জ্যাকম্যান

2

পার্ল সমাধান:

perl -pe 'print $prefix; ($prefix) = /^(.+? )/ if 1..1' INPUT.TXT

ধন্যবাদ. আমি কোনও মেকফাইলে উপরের সমাধানটি ব্যবহার করতে পারি কিনা তা নিশ্চিত নই। আমি উপরের অর্জনের জন্য সেড কমান্ডটি ব্যবহার করতে চাই।
— নাগা

@ নাগা, কোনও মেকফিলে সেড সম্পর্কে কোনও জাদু নেই। পার্ল (বা অ্যাজক বা ...) কেবল সেডের মতো একটি বাহ্যিক সরঞ্জাম।
— গ্লেন জ্যাকম্যান 24'13
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.