আমি কীভাবে কোনও ফাইলের প্রতিটি লাইনে একটি উপসর্গ / প্রত্যয় যুক্ত করব?


5

উদাহরণস্বরূপ, ফাইল 1 এ রয়েছে:

entry1:value1
entry2:value2
entry3:value3

এখন আমি প্রতিটি লাইনে একটি উপসর্গ "file1:" যুক্ত করতে চাই:

file1:entry1:value1
file1:entry2:value2
file1:entry3:value3

আমি কীভাবে একটি কমান্ড লাইনে এটি করতে পারি?

আমি ব্যাশ ব্যবহার করছি

বিটিডাব্লু, অগ্রণী স্থান অবশ্যই সংরক্ষণ করতে হবে, সুতরাং ব্যাশ অন্তর্নির্মিত পঠন লাইনটি আমার পক্ষে কাজ করে না।


শেষ অবধি, আমি একটি ছোট সি প্রোগ্রাম লেখার সিদ্ধান্ত নিয়েছি। PREFIX / SUFFIX- এ বিশেষ অক্ষর উপস্থিত থাকলে সমস্ত কমান্ড-লাইন ইউটিলিটিগুলির একটি সীমাবদ্ধতা রয়েছে বলে মনে হয়।
Xiè Jìléi

উত্তর:


9
% sed 's/^/file1:/' file1

সেডের একমাত্র সমস্যা হ'ল, আমার উপসর্গটি কীভাবে বাঁচতে হবে যদি এতে বিশেষ অক্ষর থাকে?
Xiè Jìléi

2
এটি 'সেড' এর সমস্যা নয় তবে আপনার উদ্ধৃতি দক্ষতার :)
আকিরা

ঠিক আছে, উপসর্গ / প্রত্যয়টি প্রকৃতপক্ষে পরিবর্তনশীল, সমস্ত বিশেষ অক্ষর উদ্ধৃত করা সহজ নয় এবং এমনকি আমি সেগুলিও উদ্ধৃত করতে পারি, স্ক্রিপ্টটি সম্ভবত পোর্টেবল নয়।
Xiè Jìléi

2

উপসর্গ এবং প্রত্যয় উভয় যোগ করার জন্য আমার পক্ষে সবচেয়ে পঠনযোগ্য এবং সহজে মনে রাখা নিম্নরূপ:

$ echo "  foo bar  " | awk '{print "--"$0"++"}'

যা ফলাফল

  --  foo bar  ++

নোট / শীর্ষস্থান স্পেস সহ পুরো ইনপুট সংরক্ষণ করা আছে নোট করুন।


ধন্যবাদ! অন্যান্য উত্তরগুলির সাথে তুলনামূলকভাবে এটি সহজতম উপায় এবং উদাহরণ এবং উদাহরণস্বরূপ উপসর্গ এবং প্রত্যয় উভয়ই। সম্ভবত প্রতিস্থাপন echoসঙ্গেcat filename
ooxi

ধন্যবাদ. আমি ভেবেছিলাম বাশের কাছে বেশ নতুন কেউ হিসাবে এটি করা খুব সহজ ছিল
ক্যামেরন

2

এডাব্লুকে ব্যবহার করে আপনি যে কোনও উপসর্গটি যোগ করতে পারেন:

awk -v PRE='anything:' '{$0=PRE$0; print}' file1

এটি অভিনব মুদ্রণযোগ্য অক্ষরের জন্যও কাজ করবে।


1

readদ্বারা বিভক্ত হয় $IFS, তাই আপনাকে প্রথমে এটি পরিষ্কার করতে হবে।

while IFS= read line
do
  echo "file1:$line"
done


1

এডাব্লুকে সিডের উত্তরের সমতুল্য:

awk '{gsub(/^/,"file1:")}1' file

বা কেবল সহজভাবে:

awk '{$0="file:1"$0}1' file

0

পার্ল কোনও বিশেষ অসুবিধা ছাড়াই এটি পরিচালনা করতে পারে। আমি সেগুলি ভেরিয়েবলের সাথে পরীক্ষা করছি $fooযার মধ্যে প্রতিটি অদ্ভুত অক্ষর রয়েছে যা আমি গাড়ীর ফেরত, স্থান ইত্যাদি অন্তর্ভুক্ত করার বিষয়ে ভাবতে পারি:

$ foo=$(echo -e "\r'{}[]- \`~^&%$=@\!#\"")
$ echo $foo | od -c
0000000  \r   '   {   }   [   ]   -       `   ~   ^   &   %   $   =   @
0000020   \   !   #   "  \n
0000025
$ export foo

সুতরাং, ফাইলের প্রতিটি লাইনের শুরু এবং শেষ এগুলিকে যুক্ত করতে bar.txt:

perl -ne 'chomp; print "$ENV{foo}:$_:$ENV{foo}\n"' bar.txt

%ENVহ্যাশ ব্যবহারকারীর বিভিন্ন পরিবেশের (যা আমি কেন রপ্তানি রয়েছে $fooউপরে)। বিশেষ ভেরিয়েবলটিতে $_বর্তমান লাইন থাকে এবং chompএটি থেকে পিছনের নতুন লাইনটি সরিয়ে দেয়:

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.