GNU/Linux >> Belajar Linux >  >> Linux

Menambahkan baris ke file hanya jika belum ada

Sederhanakan saja :)

grep + gema harus cukup:

grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
  • -q diamlah
  • -x cocok dengan seluruh baris
  • -F pola adalah string biasa
  • https://linux.die.net/man/1/grep

Edit:masukkan saran @cerin dan @thijs-wouters .


Coba ini:

grep -q '^option' file && sed -i 's/^option.*/option=value/' file || echo 'option=value' >> file

Ini akan menjadi solusi yang bersih, mudah dibaca, dan dapat digunakan kembali menggunakan grep dan echo untuk menambahkan baris ke file hanya jika belum ada:

LINE='include "/configs/projectname.conf"'
FILE='lighttpd.conf'
grep -qF -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE"

Jika Anda perlu mencocokkan seluruh baris, gunakan grep -xqF

Tambahkan -s untuk mengabaikan kesalahan saat file tidak ada, buat file baru hanya dengan baris itu.


Linux
  1. Grep Untuk Garis Yang Hanya Berisi 5 Atau 6 Angka?

  2. Grep String Dimana Baris Berikutnya Tidak Mengandung String?

  3. Jalankan cron job hanya jika belum berjalan

  1. open() dengan Python tidak membuat file jika tidak ada

  2. Bagaimana cara membuat file hanya jika tidak ada?

  3. Perintah sed Linux tidak mengubah file target

  1. grep tanpa menunjukkan path/file:line

  2. Cara grep \n dalam file

  3. wc -l TIDAK menghitung file terakhir jika tidak memiliki karakter baris akhir