2013-07-19 7 views
6

मैं निम्न पंक्ति जोड़ना चाहते हैं।ऐड लाइन ही अगर यह फ़ाइल में नहीं है पहले से ही

मैं लिनक्स कमांड लाइन से यह कैसे कर सकता हूं? मुझे लगता है कि grep या sed काम करेगा, लेकिन मैं इसे काम करने के लिए पर्याप्त परिचित नहीं हूं। अभी मैं echo का उपयोग करता हूं, लेकिन यह इसे बार-बार जोड़ता रहता है।

grep -q "yourline" /path/file||sed -i '/..place../ a \the line' file 
भी

awk से कोई लेना देना संभव हो,

बचत करता है, तो लाइन, मिला था बाहर निकलने के दौरान, सरणी में सभी लाइनों को बचाने:

+0

FYI करें, यह प्रभावी रूप से [एक फाइल करने के लिए एक लाइन जोड़ केवल यदि वह पहले से does not मौजूद का डुप्लिकेट है। सेड का उपयोग करना?] (Http://stackoverflow.com/questions/3557037/appending-a-line-to-a-file-only-if-it-doesnt-already-exist-using-sed) – DuffJ

उत्तर

12

मान लिया जाये कि आप फ़ाइल के अंत में यह चाहते हैं:

LINE="nohup java -jar /mnt/fusion/nfs/labStats/LabInfoAutoLog.jar > /dev/null &" 
FILE=/etc/rc.d/rc.local 
grep -q "$LINE" "$FILE" || echo "$LINE" >> "$FILE" 
2

एक विकल्प दो कदम दूर है। अन्यथा, सही जगह पर END{} ब्लॉक में लाइन जोड़ें।

पीएस आपने फ़ाइल में नहीं बताया था, उस लाइन को कहां जोड़ना है।

+0

+1 के लिए +1 मेरा से क्लीनर समाधान। मुझे लगता है कि वह सिर्फ इसे जोड़ना चाहता है। –

+0

वह कहता है कि वर्तमान में 'echo' का उपयोग करता है, इसलिए यह अंतिम होगा ('sed' में डॉलर चिह्न)। – Birei

+0

मैं सुझाव दे सकता हूं कि 'grep' bit' grep -qb ... ', बस मामले में ... – twalberg

संबंधित मुद्दे