รันคำสั่ง sed โดยไม่ตั้งใจตัวเลือกที่ไม่รู้จักเพื่อ `s 'หมายถึงไม่มีการทดแทนเกิดขึ้น


1

ฉันเผลอรันคำสั่ง sed:

find ./ -type f -exec sed -i 's/http:\/\/i.po.st\/static\/v3\/img\/set-24.png/https:\/\/i.po.st\/static/v3/img/set-24.png/gI' {} \;

ก่อนที่ฉันจะหลบหนี /

มันผิดพลาด:

sed: -e expression #1, char 75: unknown option to `s'
sed: -e expression #1, char 75: unknown option to `s'

ดังนั้นจึงไม่มีการทดแทนแปลก ๆ เกิดขึ้นใช่ไหม

linux  bash  sed 

คุณหมายถึงว่าคุณไม่ได้ทำการสำรองข้อมูลก่อนที่จะสามารถเปรียบเทียบได้ว่ามีบางสิ่งเกิดขึ้นหรือไม่
โอลิเวอร์ฟรีดริช

2
คุณสามารถใช้ตัวคั่นที่แตกต่างกันโดยวิธีการดังนั้นคุณไม่ต้องหนีมาก 😄's|http://blah|http://bleh|gi'
Daniel B

@OliverFriedrich ฉันมี แต่ที่จริงฉันเคยวิ่งไปสองครั้งก่อนหน้านี้และตอนนี้มันก็ใหญ่เกินไปที่จะเข้าใจว่าเกิดอะไรขึ้น ฉันพยายามใช้แฟล็ก -I เพื่อข้ามส่วนต่าง

ดีคุณมี SEDs ในประวัติศาสตร์ทุบตีของคุณ ... เพื่อให้คุณสามารถทำซ้ำพวกเขาได้เสมอ
Oliver Friedrich

คำตอบ:


2

จาก cmdline ไปรษณีย์ของคุณฉันขอแนะนำว่าไม่มีการทดแทนเกิดขึ้นเนื่องจากคำสั่งไม่ถูกต้อง

อย่างไรก็ตามฉันขอแนะนำให้คุณตรวจสอบผลลัพธ์ก่อนโดยกดสวิตช์ "-i" หรือสำรองไฟล์ก่อน


3
หรือใช้-i'.bak'เพื่อให้sedสร้างไฟล์สำรองข้อมูล
mhutter

0

ฉันจะยอมรับว่าไม่มีอะไรเปลี่ยนแปลง

char 75สตริงพิมพ์ในข้อความผิดพลาดของคุณหมายถึงความล้มเหลวในสตริงทดแทนซึ่งก่อให้เกิดsedเพื่อออกก่อนที่จะทำการเปลี่ยนแปลงใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.