Bir dosyanın komut dosyası düzenlemeleri için POSIX aracı (değiştirilen içeriği standart çıktıya yazdırmak yerine) ex.
printf '%s\n' 'g/^[^C]*C[^C]*$/d' x | ex file.txt
Tabii ki olabilir kullanmaksed -i Sed sürümünüz destekliyorsa, sadece en sistemlerinin farklı türlerinde çalıştırmak amacıyla bir senaryo yazıyorsanız taşınabilir değil unutmayın.
David Foerster yorumlarda sordu:
Bir kullandığınız sebebi var mıdır printfdeğil echogibi falan ex -c COMMAND?
Cevap: Evet.
İçin printfvs. echoo taşınabilirlik meselesi; bkz. printf neden yankıdan daha iyidir? Ayrıca komutları kullanarak yeni satırlar arasında geçiş yapmak daha kolaydır printf.
İçin printf ... | exvs ex -c ..., bu hata işleme meselesi. Bu özel komut için önemli değil, ama genel olarak önemli; örneğin,
ex -c '%s/this pattern is not in the file/replacement text/g | x' filename
bir senaryoda. Aşağıdakilerle karşılaştırın:
printf '%s\n' '%s/no matching lines/replacement/g' x | ex file
İlki asılır ve girişi bekler; ikincisi EOF exkomut tarafından alındığında çıkacaktır, böylece kod devam edecektir. Gibi alternatif çözümler vardır s///e, ancak POSIX tarafından belirtilmezler. Yukarıda gösterilen portatif formu kullanmayı tercih ederim.
İçin gkomuta, orada olmalıdır sonunda bir satır olacak ve ben kullanmayı tercih printfkomutları sarmak için yerine tek tırnak içinde bir yeni satır gömme.
awkAlan ayırıcının zekice kullanımı !