รุ่น sed ใดที่ไม่ใช่ GNU sed 4.0


12

ฉันกำลังพยายามหาเวอร์ชั่นsedที่ฉันใช้บน BusyBox 1.18.3 --versionผลผลิตเป็นที่คลุมเครือ

$ sed --version
This is not GNU sed version 4.0

sed.cรหัสต่อไปนี้จากที่เกี่ยวข้อง

    /* Lie to autoconf when it starts asking stupid questions. */
if (argv[1] && !strcmp(argv[1], "--version")) {
    puts("This is not GNU sed version 4.0");
    return 0;
}

นี่คือส่วนหัว:

/*
 * sed.c - very minimalist version of sed
 *
 * Copyright (C) 1999,2000,2001 by Lineo, inc. and Mark Whitley
 * Copyright (C) 1999,2000,2001 by Mark Whitley <markw@codepoet.org>
 * Copyright (C) 2002  Matt Kraai
 * Copyright (C) 2003 by Glenn McGrath
 * Copyright (C) 2003,2004 by Rob Landley <rob@landley.net>
 *
 * MAINTAINER: Rob Landley <rob@landley.net>
 *
 * Licensed under GPLv2, see file LICENSE in this source tree.
 */

นอกจากนี้ยังมีรายการ "คุณสมบัติและคำสั่งที่รองรับใน sed รุ่นนี้" ดูเหมือนเป็นพิเศษsedแต่มันพิเศษอย่างไร มันทำเองสำหรับ BusyBox หรือมันมาจากแหล่งอื่น?

ฉันจะอ้างถึงสิ่งนี้ได้sedอย่างไรเช่นในคำถาม SE

คำตอบ:


8

BusyBox ไม่ได้โดดสนับสนุนsed --versionตามที่ระบุความคิดเห็นเอาต์พุตมีไว้สำหรับกำหนดค่าสคริปต์ไม่ใช่สำหรับมนุษย์ (มันสับสนกับมนุษย์ในทางที่ค่อนข้างงี่เง่า!) อธิบายว่ามันเป็น BusyBox sed ระบุรุ่น Busybox (ที่ได้มาด้วยbusybox | head -n 1)

คำสั่ง BusyBox บางคำสั่งมีคุณสมบัติที่เป็นตัวเลือกและไม่มีวิธีทั่วไปในการค้นหาคำสั่งที่รวบรวมได้sedไม่มีสิ่งใด

สำหรับสาเหตุที่ BusyBox sed รายงานว่าไม่ใช่ GNU sed ประเด็นนี้เป็นความจริงที่ว่ามันพยายามที่จะส่งผ่านเป็น GNU sed เพราะมันเข้ากันได้อย่างเพียงพอ บางสคริปต์กำหนดค่าค้นหาสตริงGNU sed version nnnและวิธีนี้ BusyBox sed เป็นที่ยอมรับ โดยเฉพาะสคริปต์การกำหนดค่าของ GNU libcจำเป็นจะต้อง“[shot] ในหัวด้วยปืนยิงรถถังที่เต็มไปด้วยเศษแก้วและเล็บสนิม” (©ร็อบแลนด์ลีย์)


1

เป็นรุ่นที่กำหนดเองของ sed ที่เขียนขึ้นสำหรับ BusyBox ฉันจะอ้างถึงมันในเวอร์ชั่น BusyBox ที่คุณได้ติดตั้งไว้

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