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.