2012-02-13 9 views
10

का उपयोग कर फ़ाइल को किसी अन्य फ़ाइल में कॉपी/पेस्ट करें, मुझे कोई समस्या है, बिना सफलता के हल करने का प्रयास कर रहा हूं। मुझे लाइन एन से लाइन एन + वाई में एक .txt फ़ाइल का हिस्सा कॉपी करना है (मान लें 1000 से 1000000)। यह फ़ाइल बहुत बड़ी है इसलिए मैं इसे मैन्युअल रूप से नहीं कर सकता, इसलिए मैं सफलता के बिना टर्मिनल का उपयोग करने की कोशिश कर रहा हूं। अभी मैं ऑपरेटरों और sed के बिना सफलता के बिना प्रयास किया। यहाँ मैं क्या करने की कोशिश की की प्रतिलिपि है:टर्मिनल (या शैल)

-n "1000, 1000000p" पथ/पहले/फ़ाइल> पथ/दूसरा/

किसी भी मदद वास्तव में सराहना की फ़ाइल sed;)

+1

एसईडी आदेश आप उदाहरण में देने के साथ गलत कुछ भी नहीं है; यह किस तरह से विफल रहता है? –

+0

यदि इनपुट फ़ाइल में गलत लाइन समाप्ति है, तो आपको उन्हें पहले रूपांतरित करना होगा। 'Dos2unix' आज़माएं। – tripleee

उत्तर

19

यदि आप जानते हैं कि आपकी स्रोत फ़ाइल में कितनी लाइनें हैं (wc -l) आप यह कर सकते हैं .. 12000 लाइनें मानें और आप अपनी नई फ़ाइल (कुल 5000 लाइनों) में 2000 - 7000 लाइनें चाहते हैं।

बिल्ली myfile | पूंछ -10000 | हेड -5000> न्यूफाइल

अंतिम 10k लाइनें पढ़ें, फिर उस से पहली 5k लाइनें पढ़ें।

+0

आपको यह जानने की आवश्यकता नहीं है कि फ़ाइल में कितनी लाइनें हैं: बस सिर को पहले रखें। – jfg956

+0

और यदि आप पहले पूंछ रखना चाहते हैं, तो आप 'tail -n + 2000' का उपयोग कर सकते हैं। इसमें कम बफर स्पेस भी होता है। – jfg956

+1

ब्लाइंग, बिल्ली का बेकार उपयोग। इसके अलावा, मूल 'sed' कमांड इसके लिए ठीक था। – tripleee

1

वास्तव में अपने sed आदेश सिर्फ एकल उद्धरण के साथ दोहरे उद्धरण चिह्नों की जगह काम करना चाहिए