Menggunakan sed untuk mengganti karakter khusus


13

Ini berfungsi untuk menggantikan tomdengan samdalam file:

sed 's/tom/sam/g' file_1 > file_2

Tetapi ini tidak:

sed 's/*****/sam/g' file_1 > file_2

Untuk mengganti karakter khusus *****dengan kata sam. Saya telah mencoba dengan tebasan \*tetapi kesalahan.


2
Perintah apa yang Anda coba \*dan kesalahan apa yang Anda dapatkan?
cuonglm

saya telah mencoba: sed 's / **** / sam / g' test.txt> test2.txt dan menghasilkan kesalahan: sed: bad regex '*****': Ekspresi reguler sebelumnya yang tidak valid - ini memang memiliki blackslash \ before the *
Rosebud

1
Anda dapat mencoba melarikan diri dari setiap karakter khusus:sed 's/\*\*\*\*\*/sam/g'
taliezin

Jawaban:


17

Anda harus keluar dari karakter khusus dengan garis miring terbalik \di depan karakter khusus, misalnya:

sed 's/\*/t/g' test.txt > test2.txt


0

Anda perlu melarikan diri karakter khusus dengan garis miring terbalik \di depan karakter khusus. Untuk kasus Anda, lepas setiap karakter khusus dengan garis miring terbalik \.

misalnya: **** boy is ****

sed 's/\*\*\*\*/sam/g' filename

ans:

sam boy is sam
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.