Adlı bir dosyam var .ignore. Değiştirilmesi gerekiyor projdir. Örneğin:
ignore \..*
ignore README
projdir Snake
Snake'i örneğin "PacMan" ile değiştirmem gerekiyor. Adam sayfasını okudum ama ne yapacağım hakkında hiçbir fikrim yok.
Adlı bir dosyam var .ignore. Değiştirilmesi gerekiyor projdir. Örneğin:
ignore \..*
ignore README
projdir Snake
Snake'i örneğin "PacMan" ile değiştirmem gerekiyor. Adam sayfasını okudum ama ne yapacağım hakkında hiçbir fikrim yok.
Yanıtlar:
İle başlayan bir satırı arayın projdirve tüm satırı yenisiyle değiştirin:
sed -i 's/^projdir .*$/projdir PacMan/' .ignore
^ve $satır başı / satır sonu işaretleyicileri olduğundan, desen tüm satırla eşleşir; .*herhangi bir şeyle eşleşir. -iSöyler seddoğrudan değişiklikleri yazmak için .ignoresadece çıktılamayıp yerine,
Bir yaklaşım, saklamak istediğiniz parçalar için referanslar kullanarak tüm satırı yeniden yazmaktır:
sed -e 's/^\( *projdir *\)[^ ]*\(.*\)*$/\1PacMan\2/'
Başka bir yaklaşım, satırın o kısmını yeniden yazmaktır, ancak yalnızca başka bir bölüm eşleşirse:
sed -e '/^ *projdir / s/ [^# ]/ PacMan/'
Her iki örnek de ikinci boşlukla ayrılmış kelimeyi ilk sözcüğün bulunduğu satırlarda yeniden yazar projdir.
Bu eski bir yazı olmasına rağmen ve sizin için kabul edilen cevapla çözülmüş gibi görünse de, asıl soru cevaplanmamıştır. Yani bütünlük ve başkalarına yardım etmek için:
İşte aslında "projdir" ile başlayan satırlar için değil "Snake" ile eşleşen cevap ...
sed -r 's/(^.*)Snake/\1PacMan' .ignore
Bu, "Snake" dahil olmak üzere satırın başlangıcındaki her şeyi "Snake" + "PacMan" öncesi her şeyle değiştirir. \ 1, içinde eşleşenlerle () eşleşir. "Yılan" dan sonraki her şey el değmeden kalır.
sed -i 's:^projdir.*$:projdir PacMan:g' .ignore
^ projdir dize projdir ile başlayan satırı bulmaktır. Orada. * $ Aynı satırdaki projdir'den sonra dizeyi temsil eder. PacMan projdir dize, değiştirdiğimiz dizedir. g global içindir - projdir ile başlayan tüm bu satırları değiştirmek. .ignore dosyanın adıdır
-i, bu--in-placeörnek daha fazla kendi kendine belgeleme olacaktır.