আমি বেশ কয়েকটি ফাইলের শুরুতে কোনও ট্যাগ কীভাবে প্রেন্ডিং করতে পারি?


18

আমাকে কোনও ফাইলের চারপাশে পিএইচপি ট্যাগ যুক্ত করতে হবে। এগুলি ব্যবহার করে যুক্ত করা সহজ

find . -exec echo "?>" >> '{}' \;

তবে আমি ট্যাগটি কীভাবে প্রেন্ডিং করতে পারি <?php?

উত্তর:


18
sed -i "1s/^/<?php /" file

( -iস্থানটিতে সম্পাদনের জন্য এটি)

আরও বহনযোগ্য সংস্করণ:

ed file <<!
1s/^/<?php /
wq
!

নিফটি - আমি যেটা বর্ণনা করতে যাচ্ছিলাম তার থেকে কিছুটা সহজ :)
ওয়ারেন

আমাকে এখানে -i যুক্তিতে এক্সটেনশন যুক্ত করতে হবে। আপনি কি সেড বা জিএনইউ সেড ব্যবহার করছেন?

রিচার্ড: আমি যেটিকে জিএনইউ বলে দাবি করছি তা ব্যবহার করে sedএবং এটি ব্যাকআপ প্রত্যয় যুক্ত করতে দেয়।
ব্যবহারকারী1686

2
আমি বিএসডি সেড ব্যবহার করছি, এবং এটি স্থান সম্পাদনার অনুমতি দেয়, তবে আমার এটি এক্সটেনশন দেওয়া দরকার। অর্থাত্ 'সেড-আই .বাক "প্যাটার্ন" ফাইল'

3
-iপোর্টেবল নয়, সিনট্যাক্স বাস্তবায়নের মধ্যে পৃথক হয় এবং এটি সিমলিংকগুলি ভেঙে দেয়। প্রকৃতপক্ষে ফাইলগুলি সম্পাদনা করার জন্য ডিজাইন করা একটি অ্যাপ্লিকেশন ব্যবহার করা আপনার পক্ষে আরও ভাল।
ক্রিস ডাউন

5

আপনি এর AWKমতো ফিল্টার ব্যবহার করতে পারেন ,

awk '{if (NR == 1) printf "% s% s", "PREFIX", $ 0; অন্যথায় মুদ্রণ করুন $ 0} 'টেস্টফিল> নতুন ফাইল

PREFIXআপনার পিএইচপি উপসর্গ স্ট্রিং যেখানে ।


5

আমি এখনও কোনও মন্তব্য করতে পারছি না, তবে এক পদক্ষেপে সব করতে:

find . -type f -exec sed -i -e "1s/^/<?php /" -e "\$s/\$/ ?>/" {} \;

এটা ভালবাসা, আমার ঘন্টা বাঁচা।
স্টিভ হিল

5

আপনি পার্ল ওয়ান-লাইনার দিয়ে এটি করতে পারেন:

perl -0777 -p -i -e "s/^/hey /g" testfile

-0777বাহিনী ফাইল-slurping মোড, যাতে সমগ্র ফাইলটিতে একটি লাইন হিসেবে পড়া হয়। -pলুপিং সক্ষম করে। -iফাইলের স্থানের সম্পাদনা সক্ষম করে। ^একটি রেখার সূচনা নির্দেশ করে।

$ cp testfile1 testfile; perl -0777 -p -i -e "s/^/hey /g" testfile; diff testfile testfile1
1c1
< hey asdf
---
> asdf

আপডেট: মন্তব্যগুলিতে ইঙ্গিত হিসাবে, আপনি -i.bakপরিবর্তে ব্যবহার করে একটি ব্যাকআপ স্বয়ংক্রিয়ভাবে তৈরি করতে পারেন -i। এটি আপনার আদেশে ত্রুটির ক্ষেত্রে অতিরিক্ত সুরক্ষা সরবরাহ করে। যুক্তি -i ব্যাকআপটির প্রত্যয় হয়ে যায়।

একগুচ্ছ ফাইল আপডেট করার সময় আপনি কমান্ডটি দিয়ে চালাতে পারেন -i.backup${RANDOM}, সমস্ত ফাইল সঠিকভাবে আপডেট হয়েছে কিনা তা পরীক্ষা করে দেখুন, তারপরে সেই এক্সটেনশান সহ সমস্ত ফাইল সরিয়ে ফেলুন।


1
"0777 এর মান পার্লকে পুরো ফাইল স্লাপ করে
ক্রিস ডব্লিউ রিয়া

1
আপনি যদি -iপ্রত্যয় ছাড়াই পতাকাটি ব্যবহারের পরামর্শ দেন তবে দয়া করে পাঠকদের সাবধান করুন যে এর অর্থ আপনি কোনও ব্যাকআপ পাবেন না । আরও কয়েকটি চরিত্রের জন্য ( -i.bak), আপনার ওয়ান-লাইনারে কোনও টাইপ অন্তর্ভুক্ত থাকলে আপনি ব্যাকআপ পাবেন। মোটামুটি সহজ টাইপো (বলুন, -pপতাকাটি ভুলে যাওয়া ) অন্যথায় অন্যথায় আপনার পুরো দিনটিকে নষ্ট করতে পারে।
টেলিমাচাস

@ টেলিম্যাচাস - একমত আপডেট করা হয়েছে।

4

sedপ্রবাহ সম্পাদনা করার জন্য - কোনও ফাইল স্ট্রিম নয়। এমন কোনও প্রোগ্রাম ব্যবহার করুন যা এই উদ্দেশ্যে, যেমন edবা এর জন্য বোঝানো হয় ex-iবিকল্পটি কেবল sedপোর্টেবল নয়, এটি আপনার মুখোমুখি হওয়া যে কোনও প্রতীককেও ভেঙে ফেলবে, যেহেতু এটি মূলত এটি মুছে ফেলে এবং পুনরায় তৈরি করে, যা অর্থহীন।

for file in foo bar baz; do
    ed -s "${file}" << EOF
0a
<?php 
.
w
EOF
done

আপনি যা উপস্থাপন করেছেন তা হ'ল একক ফাইল সম্পাদনা করার একটি প্রাথমিক উপায়। এটি সমস্যার উত্তর দেবে বলে মনে হচ্ছে না - প্রশ্নটি বেশ কয়েকটি ফাইল সংশোধন করার বিষয়ে (যদিও এটি প্রথম নজরে সুস্পষ্ট নাও হতে পারে)। আপনি যদি edসেই উদ্দেশ্যে কীভাবে ব্যবহার করতে জানেন তবে আপনার উত্তরে এটি দেখান।
rozcietrzewiacz

@ জারসিটারজেভিয়াক্জ - যেহেতু মহাকর্ষ একক ফাইল সম্পাদনা করার একই পদ্ধতিটি প্রদর্শন করেছিল (এটি স্বীকৃত হয়েছিল), তাই আমি উত্তর দিয়েছি এটি উপযুক্ত বলে মনে করি। যেভাবেই হোক না কেন, আমি এটিকে লুপের জন্য রেখেছি, যা আপনার উদ্বেগগুলি সহজ করতে পারে।
ক্রিস ডাউন

0

ডিরেক্টরিতে প্রতিটি ফাইলের শেষে কিছু যুক্ত করার জন্য আপনি যা লিখেছিলেন তার বিকল্প bash:

for FNAME in *
do
    echo "?>" >> $FNAME
done

যদিও আমি আপনার findওয়ান-লাইনারের মতো করি :)


$FNAMEহওয়া উচিত $fname- কনভেনশন অনুসারে, আমরা এনভায়রনমেন্ট ভেরিয়েবলগুলি (পেগার, এডিটর, শেল, ...) এবং অভ্যন্তরীণ শেল ভেরিয়েবলগুলি (বেস / ভার্সন, র্যান্ডম, ...) বড় করে তুলি। অন্যান্য সমস্ত পরিবর্তনশীল নামের কমপক্ষে একটি ছোট হাতের অক্ষর থাকা উচিত। এই কনভেনশনটি দুর্ঘটনাক্রমে পরিবেশগত এবং অভ্যন্তরীণ ভেরিয়েবলগুলি অগ্রাহ্য করে avo
ক্রিস ডাউন

@ ক্রিস ডাউন ডাউন - আমি যে কনভেনশনটি দেখেছি আমার পুরো ক্যারিয়ারটি সেট করে বিভিন্ন রকম হয়েছে: লোয়ারকেস, আপার কেস এবং ক্যামেলকেস :)
ওয়ারেন

ক্যামেলকেস এবং ছোট হাতের অক্ষর ভাল। যেভাবেই হোক না কেন, ভেরিয়েবলগুলি যে পরিবেশের ভেরিয়েবল নয় পুরো পূর্ণহীন হওয়া উচিত নয়।
ক্রিস ডাউন

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