Tôi đang cố gắng thêm một dòng văn bản vào giữa tệp văn bản trong tập lệnh bash. Cụ thể là tôi đang thử thêm một máy chủ tên vào tập tin /etc/resolv.conf của tôi. Khi đứng, resolv.conf trông như thế này:Làm cách nào để thêm dòng văn bản vào giữa tệp bằng bash?
# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
Mục tiêu của tôi là để thêm nameserver 127.0.0.1
trên tất cả các dòng máy chủ tên khác, nhưng dưới bất kỳ văn bản trên đó. Cuối cùng, tôi muốn tệp resol.conf của mình trông giống như sau:
# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 127.0.0.1
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
Làm thế nào điều này có thể thông qua tập lệnh bash? Đây có phải là một cái gì đó sed hoặc awk có thể làm gì? Hoặc sẽ sáng tạo greping để tái tạo các tập tin được di chuyển tốt nhất của tôi?
này là rất tốt. Chỉ có điều kỳ lạ là nó thêm một dòng trống ở trên cùng của tập tin mới. Không phải là một vấn đề lớn, nhưng nó gây ra một khoảnh khắc OCD. – PHLAK
Ồ, vâng, bạn đã đúng! Lệnh 'sed -n' H; $ {x; s/^ \ n //; s/nameserver. * \ N/nameserver 127.0.0.1 \ n & /; p;} 'resolv.conf', tuy nhiên, giải quyết điều này vấn đề. Tôi đã thêm 's/^ \ n //' vào lệnh để nó sẽ loại bỏ dòng mới ở đầu nội dung của không gian mẫu. – brandizzi
Tuyệt vời, cảm ơn! – PHLAK