2012-10-02 11 views
6

का उपयोग करके एकाधिक लाइनों का चयन करें मेरे पास एक उदाहरण है [फ़ाइल] कि मैं लाइन 3-6 और लाइन 11 - 13 को पकड़ना चाहता हूं, फिर एक लाइन कमांड के साथ सॉर्ट करें और इसे 3_6-11_13 के रूप में सहेजें। ये वे आदेश हैं जिन्हें मैंने अभी तक उपयोग किया है लेकिन मुझे वांछित आउटपुट प्राप्त नहीं हुआ है:लिनक्स कमांड sed

sed -n '/3/,/6/p'/11/,/13/p file_1 > file_2 | sort -k 2 > file_2 & sed -n 3,6,11,13p file_1 > file_2 | sort -k 2 file_2. 

क्या इसे छोटा करने का एक बेहतर तरीका है। मैंने अजीब उपयोग करने के बारे में सोचा है, लेकिन क्या मैं अब तक sed के साथ रहा हूँ।

उत्तर

11

का उपयोग कर आदेशों को अलग कर सकते sed के साथ आप तो जैसे संख्या से पते निर्दिष्ट करने की अनुमति है:

sed -n '3,6p' 

-nरखना है स्वचालित रूप से प्रिंटिंग आउटपुट से।

तो फिर तुम कई आदेशों अगर आप अर्धविराम से उन आदेशों को अलग करके gsed उपयोग कर रहे हैं चला सकते हैं:

sed -n '3,6p; 11,13p' | sort -k2 > 3_6-11_13 
+0

धन्यवाद टिम पोटे। मैंने आपके सुझाव के थोड़ा संशोधित संस्करण का उपयोग किया। मैंने वास्तव में कोशिश की थी कि आपने दिन में पहले क्या सुझाव दिया था, लेकिन मुझे '3,6p;' के बाद सेमी-कोलन का उपयोग न करने में मुझे कोई त्रुटि मिली। एक बार फिर धन्यवाद। – demet8

1

एसईडी -e विकल्प

$ sed -e 'comm' -e 'comm' file.txt 

का उपयोग कर कई आदेशों गठबंधन या आप अर्धविराम

$ sed 'comm;comm;comm' file.txt 
+0

आप b3h3m0th धन्यवाद। – demet8