Postion'u bulun ve sed kullanarak değişiklik yapın


11

Bu komut dosyası tüm "" öğelerini "yeni şeyler" olarak değiştirmek için sed komutunu kullanır. Nasıl yyy sonra sadece "" değiştirmek: sed veya başka bir şey kullanarak?

cat >sample.txt <<EOF
xxx:
""
yyy:
""
}
EOF
sed --expression='s/""/"new stuff"/' sample.txt

Yanıtlar:


8

Sorunu anlamayabilirim. SADECE 'yyy' değerinden sonra değeri değiştirmek isterseniz önceki cevabı kullanın. 'Yyy' ifadesinden sonra HERHANGİ bir değeri değiştirmek isterseniz, bu tek astarı deneyin:

sed --expression='/yyy/,$ s/""/"new stuff"/g' sample.txt

Test etmedim: D ...


3

O'Reilly - Sed & Awk 2. Ek Etme Etrafından Cevapla sayfa 152

Dosyaya komut dosyası yazma

/yyy\:$/{
N
s/yyy\:\n\"\"/yyy\:\
\"new stuff\"/
}

Bunu her zamanki gibi verilerinize uygulayın

sed -f komut dosyası sample.txt

Bu senaryoda yyy ara: diyor. Bulunduğunda, desen arabelleğine başka bir satır okuyun (Star Trek Transporter gibi geliyor). Şimdi birleştirilen satırlarda / command olarak yapın. Bu yüzden yyy: newline "" arıyoruz. Bulunursa, yyy ile değiştirin: \ gerçek satırsonuna ters eğik çizgi sonra "yeni şeyler"

İyi şanslar


1
man sayfasına bakınız: unixhelp.ed.ac.uk/CGI/man-cgi? adresler için arama paragraf

1

İşler belirli bir karmaşıklık seviyesinin ötesine geçtiğinde, perl'e geçiyorum . s2p mevcut sed çözümünüzün çevirisini yapacaktır. Veya önemsiz bir şekilde sıfırdan yazabilirsiniz. Arama / değiştirme ifadesi aynı kalacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.