Piszę skrypt, który będzie wymagał dodania wierszy w określonej części pliku konfiguracyjnego. Na przykładBash: Wstawianie wiersza do pliku w określonej lokalizacji
Przed:
ServerActors=IpServer.UdpServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master0.gamespy.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.mplayer.com MasterServerPort=27900
ServerActors=UWeb.WebServer
Po:
ServerActors=IpServer.UdpServerUplink MasterServerAddress=unreal.epicgames.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master0.gamespy.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.mplayer.com MasterServerPort=27900
ServerActors=IpServer.UdpServerUplink MasterServerAddress=master.qtracker.com MasterServerPort=27900
ServerActors=UWeb.WebServer
Jak widać jest nowa linia dodaje. W jaki sposób mój skrypt bash może wstawić linię? Zgaduję, że będę musiał użyć sed.
Istnieje wiele sposobów i języki to zrobić, prawdopodobnie 'awk' i' sed' są najlepszymi. Powinieneś wskazać logikę w tych dodatkach, abyśmy mogli pomóc w rozwiązaniu tego problemu. – fedorqui
Trudno jest wywnioskować regułę z jednego skomplikowanego przypadku. Czy chcesz wstawić 'ServerActors = IpServer.UdpServerUplink MasterServerAddress = master.qtracker.com MasterServerPort = 27900' powyżej każdej wzmianki o' WebServer'? Lub postępuj zgodnie z każdą linią 'mplayer' z odpowiednią linią' qtracker' lub co? – Beta
Myślę, że znalazłem odpowiedź. Nie jestem pewien, czy istnieje lepszy sposób. Ale po prostu wprowadziłem do sed linię mplayera z linią mplayera * newline * qtracker line 'sed -i 's/ServerActors = IpServer.UdpServerUplink MasterServerAddress = master.mplayer.com MasterServerPort = 27900/ServerActors = IpServer.UdpServerUplink MasterServerAddress = master.mplayer.com MasterServerPort = 27900 \ nServerAktory = IpServer.UdpServerUplink MasterServerAddress = master.qtracker.com MasterServerPort = 27900/g '/ tmp/test' Jest trochę za długi, ale wydaje się działać. – dgibbs