แทนที่สตริงด้วยเครื่องหมายคำพูดคู่ในไฟล์ข้อความ

ฉันใช้คำสั่งต่อไปนี้:

perl -pi -w -e 's/EmployeeDataModel/EmployeeData/g;' *.java 

สิ่งนี้จะเปลี่ยนแปลงสิ่งต่าง ๆ เช่น:

class EmployeeDataModel to class EmployeeData

อย่างไรก็ตาม เมื่อทำสิ่งต่างๆ เช่น:

class="EmployeeDataModel" 

ดูเหมือนจะไม่ทำอะไรเลย

มีวิธีแก้ไขปัญหานี้หรือไม่?


person gran_profaci    schedule 24.06.2013    source แหล่งที่มา
comment
มันทำ เพียงใส่สองบรรทัดด้านบนไว้ในไฟล์เดียวแล้วลองใช้สคริปต์ ปัญหาถูกฝังอยู่ที่ไหนสักแห่ง...   -  person jm666    schedule 25.06.2013
comment
มันต้องได้ผล! ไม่มีเหตุผลว่าทำไมมันจะไม่ทำงาน   -  person dAm2K    schedule 25.06.2013


คำตอบ (2)


คุณแน่ใจจริงๆเหรอ? นี่คือไฟล์แรกของฉัน:

$ cat perl_test
class EmployeeDataModel
class="EmployeeDataModel"

ขณะนี้มีการแทนที่ Perl ของคุณ:

$ cat perl_test | perl -pi -w -e 's/EmployeeDataModel/Test/g'
class Test
class="Test"

คุณต้องทำอะไรผิด อาจพิมพ์เนื้อหาสตริงของคุณผิด หรืออะไรทำนองนั้น

person Jerska    schedule 24.06.2013
comment
ลองคัดลอก/วาง แล้วคุณจะเห็นว่ามันทำงานได้ตรงตามที่คาดไว้ ปัญหาของคุณอยู่ที่อื่น - person Jerska; 25.06.2013

รหัสสำหรับ GNU sed:

$echo class="EmployeeDataModel" |sed s/EmployeeDataModel/EmployeeData/g
class="EmployeeData"

และ perl ก็ใช้ได้เช่นกัน:

$echo class="EmployeeDataModel" |perl -pi -w -e s/EmployeeDataModel/EmployeeData/g;
class="EmployeeData"
person captcha    schedule 24.06.2013
comment
ใช่ -- มันทำการเปลี่ยนแปลง 'ทั้งสอง' (จริงๆ แล้วมีเพียงอันเดียว แต่คุณเลือกที่จะถือว่าการเปลี่ยนแปลงเหล่านั้นแตกต่างกัน) - person Jonathan Leffler; 25.06.2013