Saya ingin mengganti string yang dihasilkan grep
, saya punya:
$ npm info webpack | grep version
itu output saya
$ version: '2.1.0-beta.12',
tetapi saya ingin memiliki:
$ 2.1.0-beta.12
Jadi saya pikir saya mungkin mencapai itu dengan menggunakan sed
dan mengganti substring yang tidak perlu. Tapi inilah bagian yang sulit bagi saya:
$ npm info webpack | grep version: | sed s/version: /
sed: -e expression #1, char 10: unterminated `s' command
Bagaimana saya bisa mencapai tujuan saya?
-E
pilihan jelas berarti untuk menggunakan sintaks ERE, tapi GNU saya sed 4.2.2 pengguna hanya menyebutkan-r
.-E
bekerja!-E
adalah sinonim tanpa dokumen untuk-r
. Rumornya adalah bahwa POSIX telah memutuskan-E
, yang sudah digunakan BSD / OSX, dan, jika itu ditambahkan ke standar akhir, kita semua akan beralih ke-E
.The
sed
perintah pengganti (s
) mengharapkan pola pencarian dan string pengganti. Anda hanya memberinya pola pencarian. Anda juga harus mengutip string dengan benar di shell:Ini akan memberi Anda hasilnya
'2.1.0-beta.12',
, yang tidak sesuai dengan yang Anda inginkan.Karena output dari
grep
sangat sederhana, Anda dapat menggunakancut
dengan pembatas'
untuk mendapatkan bidang kedua dari baris (tanpa perlu ekspresi reguler yang rumit):Ini akan memberimu
2.1.0-beta.12
.Saya juga menambahkan
-F
untukgrep
sejak string yang Anda cari adalah string tetap , bukan ekspresi reguler.sumber
Pertama, Anda dapat mencoba menggunakan
sed
:atau Anda dapat menggunakan
awk
:yang mungkin lebih mudah.
sumber