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 projdir
ve 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. -i
Söyler sed
doğrudan değişiklikleri yazmak için .ignore
sadece çı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.