web-gelistirme-sc.com

Sed'i kullanma, Desenin üzerine mi, altına mı çizgi eklersiniz?

Benzersiz bir desenin hemen altına veya üstüne bir satır veya birden çok satır ekleyerek çok sayıda dosyayı düzenlemem gerekiyor. Lütfen bunu bir Kabukta sed, awk, Perl (veya başka bir şey) kullanarak nasıl yapacağınızı öğrenin. Teşekkürler! Örnek:

some text
lorem ipsum dolor sit amet
more text

consectetur adipiscing elit'den sonra lorem ipsum dolor sit amet eklemek istiyorum, böylece çıktı dosyası şöyle görünür:

some text
lorem ipsum dolor sit amet
consectetur adipiscing elit
more text
71
vehomzzz

Desenden sonra eklemek için: (-i yerine yerleştirilmiş içindir). Satır1 ve Satır2 eklemek istediğiniz (veya hazırlayacağınız) satırlardır.

sed -i '/pattern/a \
line1 \
line2' inputfile

Çıktı:

#cat inputfile
 pattern
 line1 line2 

Satırları daha önce hazırlamak için:

sed -i '/pattern/i \
line1 \
line2' inputfile

Çıktı:

#cat inputfile
 line1 line2 
 pattern
144
Kamal

Aşağıdaki SearchPattern öğesinden sonra bir satır ekler.

sed -i '/SearchPattern/aNew Text' SomeFile.txt

New TextSearchPattern içeren her satırın altına bir satır ekler.

İki satır ( iki satır eklemek için, \ kullanabilir ve New Text yazarken yeni bir satır girebilirsiniz.

POSIX sed, bir \ ve a sed işlevinden sonra yeni bir satır gerektirir. [1] Yeni satır olmadan eklenecek metni belirtmek, GNU sed uzantısıdır (sed bilgi sayfasında belgelendiği gibi), bu nedenle kullanımı taşınabilir değildir.

[1] https://unix.stackexchange.com/questions/52131/sed-on-osx-insert-at-a-certain-line/

33
jahroy

Stanza'da verilen ayetten sonra yeni bir ayet ekle:

sed -i '/^lorem ipsum dolor sit amet$/ s:$:\nconsectetur adipiscing elit:' FILE
3
alinsoar

Ed kullanmak daha taşınabilir; bazı sistemler sed 'de desteklemiyor

printf "/^lorem ipsum dolor sit amet/a\nconsectetur adipiscing elit\n.\nw\nq\n" |\
    /bin/ed $filename
1
Chris Rees