Pertanyaan Tambahkan kata ke file teks menggunakan perintah terminal tunggal (tidak ada editor)


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

Contoh: command /home/.../file.conf -add 'abcd' ke garis 23 dan seterusnya. Dan akhirnya, simpanlah.

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?


17
2018-03-17 06:31


asal


Seperti sed dapat datang untuk membantu. - nitishch
Ajukan satu pertanyaan. - Avinash Raj


Jawaban:


Saya biasanya melakukan cara ini ketika saya memprogram skrip saya untuk melakukan hal yang sama seperti yang Anda tanyakan tetapi secara pemrograman.

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

Voila! Anda mengerti. Perlu diperhatikan >> berarti menambahkan baris baru ke file yang ada sementara itu > hanya cukup menimpa segalanya.


30
2018-03-17 07:04



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


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

sed -i '23iabcd' file.conf

menyisipkan di baris 23 teks abcd ke dalam file file.conf 

-i melakukan modifikasi langsung ke file file.conf.

Jika ingin digunakan awk kemudian:

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 garis, Anda bisa menggunakan \ dan masukkan baris baru saat mengetik Teks Baru.

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

16
2018-03-17 07:07





Anda juga bisa menggunakan printf perintah.

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

4
2018-02-20 14:56





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

Catatan:

  • regex adalah a ekspresi reguler (Juga dikenal sebagai regex), ia mendefinisikan kriteria pencarian. Ekspresi reguler memungkinkan pencarian yang sangat dapat dikustomisasi dan sintaks yang dipahami oleh awk di manual. Dalam kasus yang paling sederhana - cari string "sebagaimana adanya", karakter demi karakter - cukup masukkan backslash sebelum karakter khusus (lihat manual untuk daftar karakter khusus)

Bagaimana itu bekerja:

  • Buka inputfile untuk membaca garis masukan, jelas outputfile dan buka untuk menulis garis output
  • untuk setiap baris, jalankan blok dalam kurung kurawal:
    • jika garis sesuai dengan ekspresi reguler, maka output baris dengan konten ditambahkan
    • jika tidak, outputkan baris yang sama.

0
2018-03-17 07:00





Saya menemukan solusi untuk pertanyaan saya sendiri menggunakan ed perintah

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

Teks dapat berisi 27 baris. Anda dapat menyalin 27 baris dari file teks dan menempel 27 baris ke file konfigurasi Anda. Tapi saya harus menjalankan ed perintah secara bersamaan untuk menambahkan lebih banyak teks ke file konfigurasi yang sama.


0
2018-03-18 12:16