दिलचस्प पोस्ट
विंडोज 7 के अंतर्गत बाह्य डिस्प्ले को जोड़ा जा रहा है या निकाला जा सकता है क्या कोई Google Voice API है? जेएसटीएल का उपयोग करते हुए एक हैशमैक्स के अंदर एक ArrayList को पुनरावृति कैसे करें? व्यवस्थापक के रूप में चलाने के लिए मैं अपने .NET अनुप्रयोग को कैसे लागू कर सकता हूं? 2 ज्ञात मानों के बीच एक स्ट्रिंग खोजें एक txt फ़ाइल प्रोग्राम से शब्द गणना एक सूचीबॉक्स में एक टेक्स्टबॉक्स आइटम का चयन करना सूचीबद्दी के चयनित आइटम को परिवर्तित नहीं करता है गैर कैप्चरिंग समूह क्या है? प्रश्न चिह्न क्या एक बृहदान्त्र के बाद (? :) मतलब है? वेबदृश्य चाहिए प्रतिबंधात्मक सामग्री सुरक्षा नीति के साथ पृष्ठ में आइफ्रेम इंजेक्शन अजगर को स्थानीय समय में यूटीसी युगिक टाइमस्टैम्प में परिवर्तित करना एक फ़ाइल के नवीनीकरण को मजबूर करते हुए कि इसकी प्रारंभिक स्थापना के दौरान संशोधित किया गया है जावा का फोर्क / बनाम एक्जीक्यूटर्स सेवा – जब किसका उपयोग किया जाए? मामले में असंवेदनशील xpath php में खोज पायथन में, मैं सूची में सभी वस्तुओं को फ़्लोट्स में कैसे रूपांतरित कर सकता हूं?

यूनिक्स पर टेक्स्ट फ़ाइल से लाइनों की पूर्वनिर्धारित श्रृंखला कैसे निकाली जा सकती है?

मेरे पास एक ~ 23000 लाइन एसक्यूएल डंप है जिसमें डेटा के लायक कई डेटाबेस शामिल हैं I मुझे इस फ़ाइल के एक निश्चित खंड को निकालने की आवश्यकता है (अर्थात एक डेटाबेस के लिए डेटा) और इसे एक नई फ़ाइल में रखें मुझे लगता है कि मैं चाहता हूँ कि डेटा के शुरू और अंत लाइन नंबर दोनों को पता है

क्या किसी को यूनिक्स कमांड (या कमांड की श्रृंखला) को एक पंक्ति से 16224 और 16482 के बीच फ़ाइल से सभी लाइनों को निकालने के लिए पता है और फिर उन्हें एक नई फ़ाइल में रीडायरेक्ट करता है?

वेब के समाधान से एकत्रित समाधान "यूनिक्स पर टेक्स्ट फ़ाइल से लाइनों की पूर्वनिर्धारित श्रृंखला कैसे निकाली जा सकती है?"

sed -n 16224,16482p filename > newfile 

एसएडी मैनुअल से :

पी – पैटर्न अंतरिक्ष (मानक आउटपुट) को प्रिंट करें। यह कमांड आमतौर पर केवल -n कमांड-लाइन विकल्प के साथ संयोजन में प्रयोग किया जाता है।

n – यदि ऑटो-प्रिंट अक्षम नहीं है, तो पैटर्न अंतरिक्ष को प्रिंट करें, फिर भी, बिना किसी भी जगह, इनपुट की अगली पंक्ति के साथ पैटर्न स्थान को बदलें। यदि कोई अधिक इनपुट नहीं है तो बिना किसी और कमांड के प्रसंस्करण के बिना बाहर निकलता है

तथा

एक लिपि में पते निम्न में से किसी भी रूप में हो सकते हैं:

संख्या एक पंक्ति संख्या निर्दिष्ट करने से इनपुट में केवल उस पंक्ति से मिलान होगा।

एक पता श्रेणी को अल्पविराम (,) द्वारा अलग किए गए दो पते निर्दिष्ट करके निर्दिष्ट किया जा सकता है। एक पता सीमा से शुरू होने वाली पंक्तियों से मेल खाता है, जहां से पहला पता मेल खाता है, और दूसरे पते तक (जारी किए) तक जारी रहेगा।

 sed -n '16224,16482 p' orig-data-file > new-file 

जहां 16224,16482 प्रारंभ लाइन नंबर और समाप्ति रेखा संख्या, समावेशी है। यह 1-अनुक्रमित है -n आउटपुट के रूप में इनपुट को गूंजता है, जिसे आप स्पष्ट रूप से नहीं चाहते हैं; संख्याएं निम्न आदेश को संचालित करने के लिए लाइनों की सीमा को दर्शाती हैं; कमांड p संबंधित लाइनों को प्रिंट करता है।

सिर / पूंछ का उपयोग करके काफी सरल:

 head -16482 in.sql | tail -258 > out.sql 

sed का उपयोग कर:

 sed -n '16482,16482p' in.sql > out.sql 

awk का उपयोग कर:

 awk 'NR>=10&&NR<=20' in.sql > out.sql 

वहां एक और दृष्टिकोण है जो awk साथ है:

 awk 'NR==16224, NR==16482' file 

यदि फाइल बहुत बड़ी है, तो आखिरी वांछित रेखा को पढ़ने के बाद exit अच्छा होगा। इस तरह यह अनावश्यक रूप से अंत तक फ़ाइल नहीं पढ़ा जाएगा:

 awk 'NR==16224, NR==16482-1; NR==16482 {print; exit}' file 

आप 'vi' और फिर निम्न कमांड का उपयोग कर सकते हैं:

 :16224,16482w!/tmp/some-file 

वैकल्पिक रूप से:

 cat file | head -n 16482 | tail -n 258 

संपादित करें: – स्पष्टीकरण जोड़ने के लिए, आप पहले 16482 लाइनों को प्रदर्शित करने के लिए सिर-एन 16482 का इस्तेमाल करते हैं, तो पहले आउटपुट से अंतिम 258 लाइनें प्राप्त करने के लिए पूंछ -5 9 का उपयोग करें।

 perl -ne 'print if 16224..16482' file.txt > new_file.txt 
  # print section of file based on line numbers sed -n '16224 ,16482p' # method 1 sed '16224,16482!d' # method 2 

sed -n '16224,16482p' < dump.sql

 cat dump.txt | head -16224 | tail -258 

चाल करना चाहिए इस दृष्टिकोण के नकारात्मक पक्ष यह है कि पूंछ के तर्क को निर्धारित करने के लिए अंकगणित करने की आवश्यकता है और इस बात के लिए खाता है कि क्या आप 'बीच' को समापन रेखा को शामिल करने के लिए चाहते हैं या नहीं।

जल्दी और गन्दी:

 head -16428 < file.in | tail -259 > file.out 

शायद यह करने का सबसे अच्छा तरीका नहीं है लेकिन यह काम करना चाहिए।

बीटीडब्ल्यू: 25 9 = 16482-16224 + 1

मैं सिर / पूंछ चाल पोस्ट करने वाला था, लेकिन असल में मैं शायद इमाक्स को आग लगाऊंगा। 😉

  1. एएससी – एक्स गोटो-लाइन रेश 16224
  2. चिह्न ( ctrlspace )
  3. एएससीएक्स गोटो-लाइन रेव 16482
  4. एएससीडब्ल्यू

नई आउटपुट फाइल, सीटीएल-वाई सेव को खोलें

मुझे देखिए कि क्या हो रहा है।

मै इस्तेमाल करूंगा:

 awk 'FNR >= 16224 && FNR <= 16482' my_file > extracted.txt 

एफएनआर में फ़ाइल से ली गई रेखा के रिकॉर्ड (रेखा) संख्या शामिल है।

मैंने एक हस्केल प्रोग्राम लिखा जिसे स्प्लिटर कहा जाता है जो इस प्रकार करता है: मेरे रिलीज़ ब्लॉग पोस्ट के माध्यम से पढ़ा हुआ है

आप निम्नानुसार प्रोग्राम का उपयोग कर सकते हैं:

 $ cat somefile | splitter 16224-16482 

और यही वह सब है जो इसके लिए है। आपको इसे स्थापित करने के लिए Haskell की आवश्यकता होगी। बस:

 $ cabal install splitter 

और तुम हो मुझे आशा है कि आप इस कार्यक्रम को उपयोगी पाते हैं

यहां तक ​​कि हम कमांड लाइन पर जांच करने के लिए ऐसा कर सकते हैं:

 cat filename|sed 'n1,n2!d' > abc.txt 

उदाहरण के लिए:

 cat foo.pl|sed '100,200!d' > abc.txt 

रूबी का उपयोग करना:

 ruby -ne 'puts "#{$.}: #{$_}" if $. >= 32613500 && $. <= 32614500' < GND.rdf > GND.extract.rdf 

मैंने एक छोटी सी बोली स्क्रिप्ट लिखी है, जो कि आप अपनी कमांड लाइन से चला सकते हैं, जब तक आप अपनी डाइरेक्टरी को शामिल करने के लिए अपने पैथ को अपडेट करते हैं (या आप इसे पहले से ही PATH में डालने वाली निर्देशिका में रख सकते हैं)।

उपयोग: $ चुटकी फ़ाइलनाम प्रारंभ-रेखा अंत-रेखा

 #!/bin/bash # Display line number ranges of a file to the terminal. # Usage: $ pinch filename start-line end-line # By Evan J. Coon FILENAME=$1 START=$2 END=$3 ERROR="[PINCH ERROR]" # Check that the number of arguments is 3 if [ $# -lt 3 ]; then echo "$ERROR Need three arguments: Filename Start-line End-line" exit 1 fi # Check that the file exists. if [ ! -f "$FILENAME" ]; then echo -e "$ERROR File does not exist. \n\t$FILENAME" exit 1 fi # Check that start-line is not greater than end-line if [ "$START" -gt "$END" ]; then echo -e "$ERROR Start line is greater than End line." exit 1 fi # Check that start-line is positive. if [ "$START" -lt 0 ]; then echo -e "$ERROR Start line is less than 0." exit 1 fi # Check that end-line is positive. if [ "$END" -lt 0 ]; then echo -e "$ERROR End line is less than 0." exit 1 fi NUMOFLINES=$(wc -l < "$FILENAME") # Check that end-line is not greater than the number of lines in the file. if [ "$END" -gt "$NUMOFLINES" ]; then echo -e "$ERROR End line is greater than number of lines in file." exit 1 fi # The distance from the end of the file to end-line ENDDIFF=$(( NUMOFLINES - END )) # For larger files, this will run more quickly. If the distance from the # end of the file to the end-line is less than the distance from the # start of the file to the start-line, then start pinching from the # bottom as opposed to the top. if [ "$START" -lt "$ENDDIFF" ]; then < "$FILENAME" head -n $END | tail -n +$START else < "$FILENAME" tail -n +$START | head -n $(( END-START+1 )) fi # Success exit 0 

यह आपके लिए काम कर सकता है (GNU sed):

 sed -ne '16224,16482w newfile' -e '16482q' file 

या बाश का लाभ उठाते हुए:

 sed -n $'16224,16482w newfile\n16482q' file 

मैं एक स्क्रिप्ट से एक चर का उपयोग करके एक ही चीज़ करना चाहता था और इसे $ चर के चारों ओर उद्धरण चिह्नों को पायर से चर नाम को अलग करने के द्वारा प्राप्त किया था:

 sed -n "$first","$count"p imagelist.txt >"$imageblock" 

मैं एक सूची को अलग-अलग फ़ोल्डर में विभाजित करना चाहता था और प्रारंभिक प्रश्न पाया और एक उपयोगी कदम का जवाब दिया। (विभाजित आदेश पुरानी ओएस पर एक विकल्प नहीं है मुझे पोर्ट कोड है)।

स्वीकार्य जवाब काम में -n यहाँ एक और तरीका है, अगर आप इच्छुक हैं

 cat $filename | sed "${linenum}p;d"; 

यह निम्न करता है:

  1. किसी फ़ाइल की सामग्री में पाइप (या फिर आप चाहते हैं कि पाठ में फ़ीड)
  2. sed दी गई रेखा का चयन करता है, इसे प्रिंट करता है
  3. डी लाइनों को हटाने के लिए आवश्यक है, अन्यथा sed सभी लाइनों अंततः मुद्रित किया जाएगा ग्रहण करेंगे। यानी, घ के बिना, आपको चयनित लाइन द्वारा मुद्रित सभी लाइनें दो बार मुद्रित हो जाएंगी क्योंकि आपके पास $ {linenum} p हिस्सा है जो इसे प्रिंट करने के लिए कह रहा है। मुझे पूरा यकीन है कि -n मूल रूप से एक ही बात कर रहा है जैसे d यहाँ।

मुझे लगता है कि यह उपयोगी समाधान हो सकता है यदि तालिका नाम "व्यक्ति" है, तो आप अपनी तालिका को पुनर्स्थापित करने के लिए आवश्यक सभी लाइनों को प्राप्त करने के लिए sed का उपयोग कर सकते हैं।

 sed -n -e '/DROP TABLE IF EXISTS.*`person `/,/UNLOCK TABLES/p' data.sql > new_data.sql 

इस उत्तर के आधार पर, जहां आप तालिका बहाल कर रहे हैं, जहां "तालिका को पहले से हटाया जा रहा है" में अनुपलब्ध है और आपको अगले तालिका को हटाने से रोकने के लिए नई फ़ाइल के नीचे से कुछ लाइनों को हटाने की आवश्यकता है।

विस्तृत जानकारी यहां भी मिल सकती है