जवाबों:
बाद में एक शॉर्ट सर्किट मूल्यांकन लें 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माध्यम से कॉल करते हैं system()।
यदि मेरे उपयोगकर्ता में मौजूद है तो नीचे दिया गया उदाहरण एक अस्थायी फ़ाइल बनाता है /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
grepखोज करने के लिए उपयोग करें।-qविकल्प सभी उत्पादन को दबाने, और मैच / nonmatch के माध्यम से वापस आ जाएगीgrepके बाहर निकलने के कोड है, जो आसानी से परीक्षण योग्य है।