पहले मैच के बाद लाइनें निकालें

Dec 31 2020

मुझे "लोमड़ी" शब्द वाली पहली पंक्ति के बाद सभी लाइनों को हटाने की आवश्यकता है

निम्न इनपुट फ़ाइल "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 लाइन से शुरू होने वाली लाइनों को कैसे हटाएं?

  • स्ट्रिंग के पहले और अंतिम घटना के पहले सभी लाइनों को कैसे हटाया जाए?

जवाब

3 Cyrus Dec 31 2020 at 03:59
awk '{print} /fox/{exit}' file

GNU sed के साथ:

sed '0,/fox/!d' file

या

sed -n '0,/fox/p' file