Grep: Tam satırı arayın ve değiştirin


13

Komuta

 grep "foo" myfile.txt

dosyamdaki tüm eşleşen satırları yazdırır.

Şimdi tam satırı başka bir dize ile değiştirmek istiyorum . Bunu nasıl yapabilirim?

Yanıtlar:


13

Tüm çizginin bir alt dizesini eşliyorsanız, çizginin sgeri kalanını silmek için sed komutunu bir regex ile kullanabilirsiniz :

sed -i 's/^.*foo.*$/another string/' myfile.txt

veya ceşleşen satırı tek seferde değiştirmek için komutu kullanın:

sed -i '/foo/ { c \
another string
}' myfile.txt

Komut istemine çok satırlı komutlar yazmak istemiyorsanız, bunu komut dosyasına koyabilirsiniz:

$ cat foo.sed
/foo/ { c \
another string
}

$ sed -i -f foo.sed myfile.txt

Teşekkürler! ikinci seçeneği kullandığımda şunu elde ederim: sed: -e ifade # 1, char 0: eşsiz `{'
kelepçe

ilk satırın sonunda \ yazmanız ve ardından Return tuşuna basmanız gerekir. \ ilk satırdan kaçmak önemlidir. Sonra, }'ayrı bir satırda olduğundan emin olun another string: yedek, oraya koyarsanız da dahil olmak üzere ikinci satırdaki her şeydir} .
Yararsız

-1

Sen kullanabilirsiniz INPLACE ait functionnality sed :

sed -i -e 's/foo/bar/' myfile.txt

Bu sadece her yerini alacak fooolan bardeğil bütün çizgi ..
Jahid
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.