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


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.