पहले मैच के बाद लाइनें निकालें
मुझे "लोमड़ी" शब्द वाली पहली पंक्ति के बाद सभी लाइनों को हटाने की आवश्यकता है
निम्न इनपुट फ़ाइल "in.txt" के लिए उदाहरण के लिए कहें
The quick
brown fox jumps
over
the
lazy dog
the second fox
is hunting
परिणाम होगा
The quick
brown fox jumps
मुझे awk या sed में बनी स्क्रिप्ट पसंद है लेकिन कोई भी अन्य कमांड लाइन टूल अच्छे हैं, जैसे perl या php या python आदि।
खोज उद्देश्यों के लिए मैं इस पंक्ति को जोड़ूंगा:
घटना के बाद लाइनों को हटा दें
बाद में संपादित करें:
मैं विंडोज में gnuwin32 टूल का उपयोग कर रहा हूं, और जो समाधान मुझे मिल सकता है वह यह था:
grep -m1 -n fox in.txt | cut -f1 -d":" > var.txt
set /p MyNumber=<var.txt
head -%MyNumber% in.txt > out.txt
हालाँकि, मैं एक ऐसे समाधान की तलाश कर रहा हूँ जो छोटा हो और जो पोर्टेबल हो (इसमें Windows विशिष्ट कमांड "सेट / पी" शामिल है
इसी तरह के सवाल:
पैटर्न की अंतिम घटना के बाद सभी लाइनों को कैसे हटाएं?
किसी मैच को बनाने से पहले लाइनों को कैसे हटाएं?
सेड के साथ मैच से पहले सभी लाइनों को हटा दें
? [ERROR] -१-2015-१२-२०१५ ’का उपयोग करते हुए पैटर्न का सामना करने से पहले 1 लाइन से शुरू होने वाली लाइनों को कैसे हटाएं?
स्ट्रिंग के पहले और अंतिम घटना के पहले सभी लाइनों को कैसे हटाया जाए?
जवाब
awk '{print} /fox/{exit}' file
GNU sed के साथ:
sed '0,/fox/!d' file
या
sed -n '0,/fox/p' file