Làm thế nào tôi có thể sử dụng một nhân vật <<in trong sed?


-2

Tôi đang cố gắng thay thế dòng này bằng một <?phpthẻ bằng sedcách sử dụng lệnh:

find . -name "*.php" -type f -exec sed -i '/if(!isset($GLOBALS/<?php/d' {} \;

Khi tôi chạy tập lệnh, nó sẽ phát sinh lỗi

unknown command: `<' sed

Làm cách nào để tạo dòng lệnh sed sử dụng regExp để thoát ký tự <?


1
-1 nếu bạn định đặt câu hỏi thì hãy sử dụng một ví dụ đơn giản để minh họa câu hỏi của bạn.
barlop

1
@barlop Tôi hiểu sự cần thiết của SSCCE nhưng trong trường hợp này vấn đề là khá rõ ràng. Không chắc làm thế nào nó có thể được đơn giản hóa.
slhck

1
@slhck người ta có thể đơn giản hóa nó và vẫn gặp lỗi tương tự, vì vậy anh ta vẫn muốn tìm, sau đó $ find . -name "*.php" -type f -exec sed -i '/ifissetLOBALS/<asdf/d' {} \; đưa ra cùng một lỗi. (và điều đó đơn giản hơn vì nó hiển thị dấu chấm than và dấu ngoặc không liên quan đến lỗi) Và sau đó vì điều đó đưa ra cùng một lỗi nên $ find . -name "*.php" -type f -exec sed -i '/hhjgh/<asdf/d' {} \; chắc chắn điều đó sẽ đơn giản hóa nó (không thể chối cãi). và (vì anh ta biết đó là một vấn đề sed) người ta có thể đơn giản hóa nó hơn nữa để loại bỏ tìm kiếm, $ echo adsf | sed -i '/sdf/<'cùng một lỗi được tạo ra.
barlop

1
cú pháp bạn đang sử dụng cho sed là sai và có vẻ như bạn thậm chí không biết làm gì đó như echo abc | sed "s / a / z /" Tôi khuyên bạn nên tìm ra cách làm một cái gì đó đơn giản như thay thế chữ 'a' bằng 'z', trước khi bạn bắt đầu tự hỏi tại sao bạn không thay thế dấu>.
barlop

Câu trả lời:


1

Hãy thử thoát khỏi <nhân vật với a \.


xem câu trả lời của g-man, anh ta đã có <thoát bởi các trích dẫn đơn.
barlop

Câu trả lời của @barlop g-man cũng hoạt động, nhưng thật khó để tôi nhìn vào tương lai.
dị

người hỏi bao gồm các trích dẫn để nó đã thoát, gman hiểu điều đó, sửa lỗi cú pháp sed của người hỏi
barlop

1

Bạn đang cố làm gì vậy? Nếu bạn muốn thay thế if(!isset($GLOBALSbằng <?php, bạn nên nói

's/if(!isset($GLOBALS/<?php/'

tức là đặt một sở đầu lệnh và loại bỏ dở cuối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.