Tambahkan kata ke file teks menggunakan perintah terminal tunggal (tanpa editor)

22

Saya baru mengenal Linux. Saya perlu mengedit .conffile dari terminal terbuka saja dan tidak menggunakan editor teks apa pun. Yaitu, dapatkah saya menambahkan kata dan kalimat ke file konfigurasi dari terminal terbuka?

Contoh: command /home/.../file.conf -add 'abcd'ke baris 23 dan seterusnya. Dan akhirnya, simpan itu.

Apakah mungkin untuk mencari kata tertentu dalam file konfigurasi tersebut dan menambahkan teks baru ke baris berikutnya dari file konfigurasi tersebut hanya dengan menggunakan perintah?

pengguna259060
sumber
1
Sepertinya sedbisa membantu.
nitishch
1
Ajukan satu pertanyaan.
Avinash Raj

Jawaban:

39

Saya biasanya melakukan ini ketika saya memprogram skrip saya untuk melakukan hal yang sama seperti yang Anda minta tetapi secara terprogram.

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

Voila! Kamu mendapatkannya. Penting untuk dicatat >>berarti menambahkan baris baru ke file yang ada sementara itu >hanya cukup menimpa segalanya.

Faron
sumber
terima kasih atas balasan secepatnya. Tetapi saya perlu menambahkan lebih dari 3000 kata ke baris 23 file .conf saya secara berurutan. Apakah ada cara yang lebih mudah?
user259060
20

Menambahkan kata dan kalimat ke file konfigurasi dari terminal terbuka dapat dengan mudah dicapai dengan sed.

sed -i '23iabcd' file.conf

menyisipkan pada baris 23 teks abcdke dalam filefile.conf

-imelakukan modifikasi langsung ke file file.conf.

Jika Anda ingin menggunakan awkitu:

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

Berikut ini menambahkan satu baris setelah SearchPattern.

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

Ini menyisipkan Teks Baru satu baris di bawah setiap baris yang berisi SearchPattern.

Untuk menambahkan dua baris, Anda dapat menggunakan \dan memasukkan baris baru saat mengetik Teks Baru.

 sed -i '/pattern/a \
line1 \
line2' inputfile
Stormvirux
sumber
5

Anda juga dapat menggunakan printfperintah.

Untuk menambahkan baris ke file Anda

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

Untuk menimpa file

$ printf "This overwrites your file" > file.txt
rafaelbattesti
sumber
0
awk '{if ($1 ~ /regex/) print $1 "content to be added"; else print $1}' < inputfile > outputfile

Catatan:

  • regex adalah ekspresi reguler (juga dikenal sebagai regex), itu mendefinisikan kriteria pencarian. Ekspresi reguler memungkinkan pencarian yang sangat dapat dikustomisasi dan sintaks yang dipahami oleh awk ada di manual . Dalam kasus yang paling sederhana - cari string "apa adanya", karakter demi karakter - cukup masukkan garis miring terbalik sebelum karakter khusus (lihat manual untuk daftar karakter khusus)

Bagaimana itu bekerja:

  • buka inputfileuntuk membaca baris input, hapus outputfiledan buka untuk menulis baris output
  • untuk setiap baris, jalankan blok dalam kurung:
    • jika baris cocok dengan ekspresi reguler, maka output baris dengan konten ditambahkan
    • jika tidak, output baris yang sama.
ignis
sumber
0

Saya menemukan solusi untuk pertanyaan saya sendiri menggunakan edperintah

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

Teks dapat berisi 27 baris. Anda dapat menyalin 27 baris dari file teks dan menempelkan 27 baris ke file konfigurasi Anda. Tapi saya perlu menjalankan edperintah secara bersamaan untuk menambahkan lebih banyak teks ke file konfigurasi yang sama.

pengguna259060
sumber