Cara menambahkan # Shebang di baris pertama file yang merupakan skrip otomatis dibuat oleh program lain

3

Saya mencari metode untuk menambahkan shebang #! / Bin / csh -f ke baris pertama file saya, yang sebenarnya dibuat oleh satu set program lain, karena skrip ini dibuat secara otomatis, ini harus dijalankan dari bash , ketika pengguna mengklik beberapa tombol di alat saya. Saya mencoba menggunakan sed tetapi tidak berhasil.

sed ' 1 s/.*/\#!/bin/csh -f/' filename.

dan awk

awk 'NR==1{printf "%s %s\n", $0, "#!/bin/csh -f"}' filename

kedua perintah ini kembali mengikuti

/bin/csh is not an event.

Tolong sarankan metode yang lebih baik.

Dan

StarCoder17
sumber
mencoba melarikan diri ! karakter dalam upaya Anda? seperti dalam \! bukannya polos !
Xen2050
Terima kasih "Xen2050", saya mencoba saran Anda dan ini berfungsi dengan baik. sed '1 i \ # \! \ / bin \ / csh -f' nama file & gt; out.txt
StarCoder17
Saya akan melemparkannya dalam jawaban kalau begitu
Xen2050

Jawaban:

1

Coba lepas ! karakter, dengan menggunakan \! bukannya polos !, harus memberikan hasil yang lebih baik. Jadi cobalah:

sed '1 i\#\!\/bin\/csh -f' filename > out.txt
Xen2050
sumber
Jika Anda menempatkan -i dalam sed perintah Anda dapat memodifikasi file sebagai gantinya untuk melakukan pengalihan.
Hastur
1

Alternatif awk

awk 'BEGIN{print "#!/bin/csh -f"} {print}' filename > out.sh

awk 'NR==1{print "#!/bin/csh -f"};{print}' filename > out.sh 

Varian Xen2050 untuk memodifikasi file di dalam alih-alih mengarahkannya ke out.sh

 sed -i '1 i\#\!\/bin\/csh -f' filename
Hastur
sumber