Sed untuk windows

3

Saya mencoba menggunakan SED untuk pertama kalinya. Untuk memperumit masalah, saya menggunakannya di windows. Saya mengunduh dari sumber ini . Karena saya tidak memiliki hak menginstal pada mesin kerja saya, saya membuat folder di profil saya untuk executable dan menambahkannya ke PATH .

Saya mengalami masalah mencoba menggunakan SED untuk pertama kalinya. Itu terus gagal dengan kesalahan:

sed: -e expression #1, char 1: unknown command: `` '' ` Saya sudah mencoba beberapa sampel berbeda Ini caranya tapi saya tidak bisa mendapatkannya. Saya menemukan tidak ada orang lain yang mengalami masalah ini. Apa yang harus saya coba? Saya telah mencoba merangkumnya dalam tanda kutip, tanda kutip ganda dan tanda kutip kembali. Sepertinya tidak ada yang membantu.

TheSavo
sumber
Apa yang sebenarnya Anda jalankan?
johnny
Saya akan sangat merekomendasikan cygwin, shell windows adalah PITA untuk perintah unix-like. Namun, jika Anda berencana untuk tetap menggunakan shell windows, cara termudah yang ditemukan untuk menjalankan sed atau awk adalah dengan membuat file skrip dan kemudian memanggil file dengan flag -f. Sebagai contoh sed -f some_sed_script.sed atau awk -f some_awk_script.awk
SiegeX
Bisakah Anda menempelkan persis apa yang Anda berikan ke shell windows?
Rob
Saya pikir saya memasukkan input saya. Saya berharap saya lakukan, karena sekarang berfungsi setelah saya mencoba memberikan @RedGrittyBrick
TheSavo

Jawaban:

4
C:\>sed sdf
sed: -e expression #1, char 3: Unterminated `s' command

C:\>echo aaa > f
C:\>sed -e "s/a/x/" < f
xaa

Ini menggunakan sed dari unxutils

RedGrittyBrick
sumber
Ini berhasil !. Terima kasih. Apakah itu karena -e parameter?
TheSavo
Tidak yakin apa yang salah, menghapus -e parameter dan ganda " Kutipan, masih berfungsi
TheSavo
5

Berbeda dengan Unix, shell baris perintah Windows tidak melakukan pemisahan kata dan tidak menghilangkan tanda kutip; program hanya menerima string tunggal yang berisi seluruh baris perintah. Ini berarti bahwa tidak semua program dapat mengikuti aturan penawaran yang sama.

Dalam hal ini, versi GnuWin32 dari sed hanya mendukung satu gaya kutipan - " kutipan ganda ". Misalnya, dalam pengujian saya yang berikut ini berfungsi dengan baik:

sed "s/foo/bar/"

Anda juga bisa mendapatkannya sed dari Cygwin , bersama dengan sistem mirip Unix yang lebih lengkap: kerang, editor, alat lain. Akan lebih mudah jika Anda menggunakan shell Unix untuk belajar, untuk menghindari masalah sintaksis seperti itu di masa depan.

grawity
sumber
kalahkan cygwin saya dengan detik ... :)
Rich Homolka
Terima kasih. Apakah CygWin menawarkan yang tidak memasang? Saya mencoba " kutipan ganda dan masih tidak ada sukacita.
TheSavo
@ TheSavo hanya menghapus direktori. ada beberapa entri registri yang terkait dengan mount cygwin, tetapi ini dapat diabaikan dengan aman, hanya cygwin membacanya
Rich Homolka