Tôi đang cố gắng thay thế dòng này bằng một <?php
thẻ bằng sed
cá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
@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 đó
—
barlop
$ 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.
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
Crossposting: stackoverflow.com/q/26306171/3776858
—
Cyrus