एक फ़ाइल से लाइनों की निर्दिष्ट सीमा पढ़ें


15

मेरे पास i फाइल है जिसमें 100000 लाइन है जिसमें मैं लाइन # 5555 से लाइन # 7777 लाइन लाइन के तहत कैसे प्राप्त कर सकता हूं।

सबको धन्यवाद।

linux  files  sed 

1
@ इब्राहिम, काइल के उत्तर को स्वीकार करने पर विचार करें (यदि बाईं ओर हरे रंग की चेकमार्क को टिक करके) अगर यह आपकी मदद करता है
जोनिक

यदि आप sed का उपयोग करना चाहते हैं या अन्य उपकरण ठीक हैं, तो आप सटीक हो सकते हैं।
मनु एच।

अनुसंधान का एक छोटा सा फेंकता है कम से कम stackoverflow.com/questions/83329/...
sancho.s को फिर से बहाल मोनिका

जवाबों:


22
sed '5555,7777!d' <filename>

यह फ़ाइल की 5555-7777 लाइनों को सम्मिलित रूप से प्रिंट करेगा।

डेनिस ने पोस्ट किया जो मैं सहमत हूं कि तेज होना चाहिए:

sed '5555,7777p; 7778q' filename

निम्नलिखित सबूत है कि यह तेज होना चाहिए:

$ n=1
$ while [[ n -le 100000 ]]; do echo $n >> sedtest2; n=$((n + 1)); done
$ strace -e trace=read -o sed1 sed '5555,7777!d' sedtest2
$ strace -e trace=read -o sed2 sed '5555,7777p; 7778q' sedtest2
$ wc -l sed1
149 sed1
$ wc -l sed2
14 sed1

केवल बैश में (मनोरंजन के लिए):

n=1
while read line; do 
    if [[ ($n -ge 5555) && ($n -le 7777)  ]]; then 
        echo $line
    elif [[ $n -gt 7777 ]]; then
        break
    fi 
    n=$(( $n + 1 ))
done < file

मुझे लगता है कि आपका $n -gt 37777 शायद होना चाहिए? इसके अलावा, आप if (( n >= 5555 ))अधिक "प्राकृतिक" दिखने वाले संख्यात्मक तुलना ऑपरेटरों (और डॉलर चिह्न को छोड़ने की क्षमता) के लिए कर सकते हैं। और आप कर सकते हैं ((n++))
अगली सूचना तक रोक दिया गया।


7

या तो ये काम करना चाहिए;

  • sed -n ' startnumber , endnumber p'
  • awk 'NR> = startnumber && NR <= endnumber ' फ़ाइल

वैसे शानदार सवाल;)


1

मैंने पाया कि sed विकल्प mysqldump फ़ाइल पर काम नहीं करता था, मैं उद्धृत लाइन फीड्स या मल्टीबाइट वर्णों को संभालने के कारण अनुमान लगा रहा हूं। सिर और पूंछ इसे उसी पंक्ति संख्या के रूप में उपयोग करते हुए स्लाइस करते हैं जो मुझे चाहिए था। $ K के माध्यम से लाइनें $ j प्राप्त करने के लिए, आपको आवश्यकता है:

x=$(( $k - $j + 1 ))
tail -n +$j filename | head -${x} 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.