2013-07-19 72 views
6

tôi muốn thêm vào dòng sau:add dòng vào một tập tin CHỈ nếu nó không có trong tập tin đã

nohup java -jar /mnt/fusion/nfs/labStats/LabInfoAutoLog.jar > /dev/null & 

đến cuối của tập tin /etc/rc.d/rc.local nếu nó chưa tồn tại.

Tôi làm cách nào để thực hiện điều đó từ linux dòng lệnh? Tôi giả sử grep hoặc sed sẽ hoạt động, nhưng tôi không đủ quen thuộc để làm cho nó hoạt động. Ngay bây giờ tôi sử dụng echo, nhưng điều đó chỉ tiếp tục thêm nó hơn và hơn nữa.

+0

FYI, đây là một cách hiệu quả là một bản sao của [Phụ thêm một dòng vào một tập tin ONLY nếu nó không tồn tại. Sử dụng Sed?] (Http://stackoverflow.com/questions/3557037/appending-a-line-to-a-file-only-if-it-doesnt-already-exist-using-sed) – DuffJ

Trả lời

12

Giả sử bạn muốn nó ở phần cuối của tập tin:

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

một lựa chọn là hai bước sau:

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

cũng có thể làm với awk,

lưu tất cả các dòng trong mảng, trong tiết kiệm nếu dòng đã được tìm thấy, lối ra. nếu không, hãy thêm dòng trong khối END{} vào đúng vị trí.

P.S. Bạn không nói trong tệp, nơi để thêm dòng đó.

+0

+1 cho một giải pháp sạch hơn mỏ. Tôi nghĩ anh ấy chỉ muốn nối thêm nó. –

+0

Ông nói rằng hiện đang sử dụng 'echo' vì vậy nó sẽ là người cuối cùng (ký hiệu đô la trong 'sed'). – Birei

+0

Tôi có thể đề nghị làm cho 'grep' bit nói' grep -qb ... ', chỉ trong trường hợp ... – twalberg

Các vấn đề liên quan