लिनक्स टर्मिनल का उपयोग कर फ़ाइल के मध्य से लाइनों को कैसे निकालें

लिनक्स टर्मिनल का उपयोग कर फ़ाइल के मध्य से लाइनों को कैसे निकालें
लिनक्स टर्मिनल का उपयोग कर फ़ाइल के मध्य से लाइनों को कैसे निकालें

वीडियो: लिनक्स टर्मिनल का उपयोग कर फ़ाइल के मध्य से लाइनों को कैसे निकालें

वीडियो: लिनक्स टर्मिनल का उपयोग कर फ़ाइल के मध्य से लाइनों को कैसे निकालें
वीडियो: SteamOS 3.0 on your Desktop PC - YouTube 2024, अप्रैल
Anonim
जब आप अपने स्वयं के सर्वर प्रबंधित करते हैं, तो अर्ध-नियमित आधार पर करने वाली चीज़ों में से एक को फ़ाइल के बीच से सामान निकालना होता है। हो सकता है कि यह एक लॉग फ़ाइल है, या आपको अपनी MySQL बैकअप फ़ाइल के बीच से एक ही तालिका को अतिरिक्त करने की आवश्यकता है, जैसा मैंने किया था।
जब आप अपने स्वयं के सर्वर प्रबंधित करते हैं, तो अर्ध-नियमित आधार पर करने वाली चीज़ों में से एक को फ़ाइल के बीच से सामान निकालना होता है। हो सकता है कि यह एक लॉग फ़ाइल है, या आपको अपनी MySQL बैकअप फ़ाइल के बीच से एक ही तालिका को अतिरिक्त करने की आवश्यकता है, जैसा मैंने किया था।

रेखा संख्याओं को समझने के लिए, एक साधारण grep -n कमांड ने नौकरी की थी (-एन तर्क पंक्ति संख्याओं को आउटपुट करता है)। इससे यह पता लगाना आसान हो गया कि मुझे निकालने के लिए क्या चाहिए।

grep -n wp_posts howtogeekdb010114.bak | more

इस तरह के कुछ में परिणाम, जो आउटपुट के बाईं ओर लाइन नंबर दिखाता है। सबकुछ "अधिक" में पिप करना सुनिश्चित करता है कि आप बिना स्क्रॉल किए बिना पहली पंक्ति देख सकते हैं। अब आपके पास लाइन नंबर शुरू हो गया है, और संभवतः एक के साथ समाप्त होना है।

4160:-- Table structure for table `wp_posts` 4163:DROP TABLE IF EXISTS `wp_posts`; 4166:CREATE TABLE `wp_posts` ( 4203:-- Dumping data for table `wp_posts` 4206:LOCK TABLES `wp_posts` WRITE; 4207:/*!40000 ALTER TABLE `wp_posts` DISABLE KEYS */; 4208:INSERT INTO `wp_posts` VALUES (1,2,'2006-09-11 05:07:23','2006-09-11

आप निश्चित रूप से, grep से आउटपुट को किसी अन्य फ़ाइल में पाइप कर सकते हैं, जैसे:

grep keyword filename.txt > outputfile

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

sed -n '4160,4209p' howtogeekdb0101140201.bak > outputfile

असल में सिंटैक्स इस तरह है, -n तर्क का उपयोग करना सुनिश्चित करें, और दूसरी पंक्ति संख्या के बाद "पी" शामिल करें।

sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' filename > outputfilename

कुछ अन्य तरीकों से आप फ़ाइल के बीच में विशिष्ट लाइनों को खींच सकते हैं? आप फ़ाइल के पहले एक्स लाइनों के माध्यम से पढ़ने के लिए + संख्या तर्क के साथ "हेड" कमांड का उपयोग कर सकते हैं और फिर उन पंक्तियों को निकालने के लिए पूंछ का उपयोग कर सकते हैं। सबसे अच्छा विकल्प नहीं है, बहुत सारे ओवरहेड। सरल विकल्प? आप फ़ाइल को कई पंक्तियों में फ़ाइल को अपने इच्छित लाइन नंबर पर बदलने के लिए स्प्लिट कमांड का उपयोग कर सकते हैं, और फिर सिर या पूंछ का उपयोग करके लाइनों को निकाल सकते हैं।

या आप सिर्फ sed का उपयोग कर सकते हैं।

सिफारिश की: