मुझे 2GB SQL डंप की पहली 42 लाइनों को हटाने की आवश्यकता है।
मुझे पता है कि मैं पहली पंक्तियों का उपयोग करके देख सकता हूं:
head -n 44 dump.sql
लेकिन क्या उन्हें संपादित करने या हटाने के लिए कुछ भी है?
मुझे 2GB SQL डंप की पहली 42 लाइनों को हटाने की आवश्यकता है।
मुझे पता है कि मैं पहली पंक्तियों का उपयोग करके देख सकता हूं:
head -n 44 dump.sql
लेकिन क्या उन्हें संपादित करने या हटाने के लिए कुछ भी है?
जवाबों:
यदि आप सिर्फ 43 वीं पंक्ति से उन लाइनों को देखना चाहते हैं जो आप उपयोग कर सकते हैं
tail -n +43 dump.sql
+संकेत महत्वपूर्ण है - बिना यह, tailप्रिंट होगा पिछले 43 लाइनों के बजाय। वैकल्पिक रूप से 'sed' के साथ
sed 1,42d dump.sql
यदि आप मूल फ़ाइल से वास्तव में पहले 42 लाइनों को हटाना चाहते हैं तो आप sed को -iविकल्प के साथ परिवर्तन कर सकते हैं
sed -i 1,42d dump.sql
sed -i 1,50000000d 17GigFileएक अस्थायी फ़ाइल बनाता है sedXYZजो कई और गीगाबाइट का उपभोग करता है। क्या अस्थायी फ़ाइलों के बिना एक दृष्टिकोण है?
tail -n +43और क्या अंतर है head -n 44?
यह सबसे आसान लगता है:
sed '1,42d' test.sql > test2.sql
Test.sql से लाइनें 1-42 निकालें और test2.sql के रूप में सहेजें
आप पूर्व मोड में विम का उपयोग कर सकते हैं:
ex -s -c '1d42|x' dump.sql
1 पहली पंक्ति में जाएं
42 42 लाइनों का चयन करें
d हटाना
x सहेजें और बंद करें
क्षमा करें, मैं अभी आपको वास्तविक कोड नहीं दे सकता। हालाँकि, की तर्ज पर कुछ देखने की कोशिश करें
tail -n arcv(`wc -l`) -44
यह क्या करना चाहिए (एक बार ठीक से प्रारूपित) फ़ाइल में पंक्तियों की संख्या (wc -l) की गणना करें, इसमें से 44 घटाएं (-44) और फिर फ़ाइल में 45 वीं पंक्ति से शुरू होने वाली सभी चीज़ों का प्रिंट आउट लें।
उम्मीद है इससे मदद मिलेगी और सौभाग्यशाली हो।
wc -lफ़ाइल पर, आप इसे दो बार की प्रक्रिया है, जबकि sedया tailयह केवल एक बार की प्रक्रिया।
sedलिनक्स और मैक में विसंगतियों के कारण , मैंने tail -n +43 dump.sql > dump.sqlप्रारूप का उपयोग करने का संकल्प लिया ।
tail। मुझे आपके उत्तरों से सीखने के लिए कई बार कुछ नया मिला। धन्यवाद।