Tek bir terminal komutu kullanarak metin dosyasına kelimeler ekleme (düzenleyici yok)


22

Linux'ta yeniyim. .confHerhangi bir metin editörleri kullanarak sadece açık terminalden bir dosyayı düzenlemem gerekiyor . Yani, açık bir uçbirimden bir yapılandırma dosyasına sözcükler ve cümleler ekleyebilir miyim?

Örnek: command /home/.../file.conf -add 'abcd'23. satıra vb. Ve son olarak, sakla.

Bu komut dosyasındaki belirli bir kelimeyi aramak ve bu komut dosyasının sonraki satırına yalnızca komutu kullanarak yeni metin eklemek mümkün müdür?


1
sedYardıma gelebilir gibi görünüyor .
— 14'te nitishch

1
Tek bir soru sorun.
— Avinash Raj

Yanıtlar:


39

Genellikle böylesi komutlarımı istediğin şeyi programlı olarak programlamak için programlarken yaparım.

echo "Hello you!" >> myfile.txt
echo "this is 2nd line text" >> file.txt
echo "last line!" >> file.txt

İşte bu kadar! Anladın. Dikkat edilmesi gereken >>, mevcut dosyaya yeni satır eklemek anlamına gelir, bu arada >her şeyin üzerine yazmanız yeterlidir.


Hızlı cevabınızdan dolayı teşekkür ederiz. Ama sırayla benim .conf dosyasının 23. satırına 3000'den fazla kelime gibi eklemeniz gerekir. Daha kolay bir yolu var mı?
— user259060

20

Açık terminalden bir yapılandırma dosyasına kelimeler ve cümleler eklemek sed ile kolayca elde edilebilir.

sed -i '23iabcd' file.conf

23. satıra metni abcddosyaya eklerfile.conf

-iDeğişikliği doğrudan dosyaya yapar file.conf.

Kullanmak istiyorsanız awk:

awk -v n=23 -v s="abcd" 'NR == n {print s} {print}' file > file.conf

Aşağıdaki, SearchPattern'den sonra bir satır ekler.

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

SearchPattern içeren her satırın altına bir satır Yeni Metin ekler.

İki satır eklemek için \a yazabilir ve Yeni Metin yazarken yeni satır girebilirsiniz.

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

5

Ayrıca printfKomutu .

Dosyanıza satır eklemek için

$ printf "\nThis is a new line to your document" >> file.txt

Dosyanın üzerine yazmak için

$ printf "This overwrites your file" > file.txt

0
awk '{if ($1 ~ /regex/) print $1 "content to be added"; else print $1}' < inputfile > outputfile

Notlar:

  • regex normal bir ifadedir (regex olarak da bilinir), arama ölçütlerini tanımlar. Düzenli ifadeler çok özelleştirilebilir aramalara izin verir ve awk tarafından anlaşılan sözdizimi kılavuzdadır . En basit durumda - "olduğu gibi", karakter karakter olarak bir dize arayın - özel karakterlerin önüne ters eğik çizgi koyun (özel karakterlerin listesi için kılavuza bakın)

Nasıl çalışır:

  • açık inputfile , giriş hatlarını okumak için temizlemek outputfileve çıkış hatları yazdığı için açmak
  • her satır için bloğu parantez içinde çalıştırın:
    • satır normal ifadeyle eşleşiyorsa, satırın sonuna içerik eklenir
    • aksi takdirde, aynı satırın çıktısını alın.

0

Ben kullanarak kendi soruya çözüm buldu edkomutu

ed -s /home/.../abc.conf <<< $'23i\ntext\n.\nwq'

Metin 27 satır içerebilir. Bir metin dosyasından 27 satır kopyalayabilir ve 27 satırı yapılandırma dosyanıza yapıştırabilirsiniz. Ancak edaynı yapılandırma dosyasına daha fazla metin eklemek için komutu aynı anda çalıştırmam gerekiyor .

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.