উত্তর:
এর পরে একটি শর্ট সার্কিট মূল্যায়ন করুন grep:
grep -q 'search_pattern' /file && : >/newfile
grep -qSTDOUT এ কোনও আউটপুট তৈরি করে না, 0যদি ফাইলটিতে প্যাটার্নটি পাওয়া যায় তবে কেবল প্রস্থান স্থিতি দিয়ে প্রস্থান করে
তাহলে ধরণ (পাওয়া যায় &&), একটি ফাইল তৈরি /newfileদ্বারা : >/newfile।
আপনি স্বাভাবিক touch /newfileপদ্ধতির জন্যও যেতে পারেন , বা bashএকটি খালি পুনঃনির্দেশ - >/newfileএটিও করবে।
কেবল লক্ষ্য করার জন্য, যদি ফাইলটি ইতিমধ্যে বিদ্যমান থাকে তবে touchকেবলমাত্র ফাইলটি কাটা ছাড়াই প্রাসঙ্গিক টাইমস্ট্যাম্পগুলি পরিবর্তন করা হবে। এবং খালি পুনঃনির্দেশটি চলতে চলতে >/newfileসমস্ত শেলগুলিতে সমর্থিত নয় (যেমন zsh:), যেখানে আপনাকে ম্যানুয়ালি ইওএফ পাঠাতে হবে।
:?
:পক্ষে সংক্ষিপ্তসার true, এটি কোনও অপ-কমান্ড যা সর্বদা প্রস্থান স্থিতি 0 দিয়ে প্রস্থান করে
শুধুই মজার জন্য:
python3 -c "if 'string' in open('logfile').read(): open('newfile', 'wt')"
যেখানে 'string'স্ট্রিং (শর্ত) 'logfile'দ্বারা প্রতিস্থাপিত হয় 'newfile', লগফাইলে যাওয়ার পাথ দ্বারা প্রতিস্থাপিত হয়, তৈরির জন্য ফাইলের আসল পাথ দ্বারা প্রতিস্থাপিত হয়, উদাহরণস্বরূপ সমস্ত একক উদ্ধৃতিতে।
আপনি এর system()কমান্ড দিয়ে awk ব্যবহার করতে পারেন । যদি এটি /pattern/পাওয়া যায় তবে কোডব্লকটি {}কার্যকর করা হবে , এক্ষেত্রে আমরা কমান্ডের touch /tmp/my_file.txtমাধ্যমে কল করব callsystem()
একটি অস্থায়ী ফাইল তৈরি আছে যদি আমার ব্যবহারকারী উপস্থিত শো নীচের উদাহরণে /etc/passwd।
$ awk '/xieerqi/{system("touch /tmp/my_file.txt")}' /etc/passwd
$ ls -l /tmp/my_file.txt
-rw-rw-r-- 1 xieerqi xieerqi 0 1月 25 07:58 /tmp/my_file.txt
বিকল্পভাবে, আমরা ফাইলটি পুনঃনির্দেশ ব্যবহার করতে পারি:
awk '/xieerqi/{f="/tmp/my_file.txt";print "" > f;close(f)}' /etc/passwd
আপনি নতুন খালি ফাইল চান কিনা বা আপনি ফাইলটি তৈরি করার জন্য আরও জটিল প্রক্রিয়াজাতকরণ প্রয়োজন কিনা তা আপনি বলবেন না।
প্রাক্তন হলে, @himayl দ্বারা উত্তর স্পট রয়েছে is
অন্যথায়, যদি একটি বিবৃতি ব্যবহার করুন:
if grep -q 'search_pattern' /file
then
# Create your file here
fi
grepঅনুসন্ধান করতে ব্যবহার করুন ।-qবিকল্প সব আউটপুট দমন, এবং ম্যাচ / nonmatch মাধ্যমে ফিরে আসবেgrep'র প্রস্থান কোড, যা খুব সহজেই testable হয়।