Hayır, bu elde edeceğiniz kadar verimli. İşi biraz daha hızlı yapabilen bir C programı yazabilirsiniz (daha az başlangıç zamanı ve işleme argümanları), ancak dosyalar büyük olduğunda sed ile aynı hıza yönelir (ve bir dakika alırsa büyük olduklarını varsayarım) ).
Ancak sorunuz, çözümü önceden varsaydığı için diğer birçok problemle aynı sorundan muzdariptir. Bize nasıl yapmak yerine ne yapmaya çalıştığınızı ayrıntılı olarak anlatırsanız , daha iyi bir seçenek önerebiliriz.
Örneğin, bu, başka bir program B'nin işlediği bir A dosyasıysa, bir çözüm ilk satırı çıkarmamak, ancak B programını farklı şekilde işlemek için değiştirmek olacaktır.
Tüm programlarınızın bu A dosyasına eklendiğini ve B programının şu anda ilk satırı silmeden önce okuduğunu ve işlediğini varsayalım.
B programını yeniden tasarlayabilir, böylece ilk satırı silmeye çalışmaz, ancak A dosyasına kalıcı (muhtemelen dosya tabanlı) bir ofset tutar, böylece bir dahaki sefer çalıştığında, bu ofseti, işlemi arayabilir. ve hatta ofseti güncelleyin.
Daha sonra, sessiz bir zamanda (gece yarısı?), İşlenen tüm satırları silmek ve ofseti 0'a ayarlamak için A dosyasının özel olarak işlenmesi gerekebilir.
Bir programın açmak ve yeniden yazmak yerine bir dosyayı açıp araması kesinlikle daha hızlı olacaktır. Bu tartışma, elbette B programı üzerinde kontrolünüz olduğunu varsayar. Durumun bu olup olmadığını bilmiyorum ama daha fazla bilgi verirseniz başka olası çözümler de olabilir.