Вместо того, чтобы заглядывать в операционную систему, посмотрите сценарии, используемые для сборки программ.
Любой сценарий configure
, сгенерированный autoconf, содержит сценарии sed, а сам генерирует сценарий, содержащий сценарий sed. Это заменяет значения для имен в файлах шаблонов, таких как Makefile.in
, для создания Makefile
. Например (удобно найти с помощью веб-поиска) этот фрагмент config.Файл status
для distcc показывает, как используется sed
:
while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done
Помимо autoconf, сценарии полезны для других аспектов сборки (и установки) программ. Скрипт manlinks.sed
в ncurses достаточно длинный, чтобы его можно было рассматривать как программу.
Конечно, вы можете использовать grep
, чтобы найти использованный sed
. Однако для автономных сценариев обычно используется суффикс файла ".sed". "locate .sed"
находит их.
При быстрой проверке на моей машине есть один очень длинный сценарий sed (более двух тысяч строк, включая комментарии):
#!/usr/5bin/sed -nf
#r
#r sokoban.sed - aurlio marinho jargas
#r Changes by Gunnar Ritter, October 2002.
#r
#r Sccsid @(#)sokoban.sed 1.7 (gritter) 10/12/03
#r
#r motivated by reading the amazing Adventure (Colossal Cave) history
#r
#r GPL levels took from Mike Sharpe's sokoban.vim
#r
#r IMPORTANT
#r this script has terminal control chars, so you must DOWNLOAD this
#r file. just copy/paste or printing it to a file (lynx) will NOT work.
#r
#r THE GAME
#r you know sokoban. everybody knows sokoban.
(Кто-то сделал раскрашенную версию его).
Это один из трех скриптов, используемых для тестирования sed
в «инструментах семейной реликвии»:
-rw-r--r-- 1 tom 285 Oct 6 2002 makefile
-rw-r--r-- 1 tom 3664 Oct 11 2003 hanoi.sed
-rw-r--r-- 1 tom 2338 Oct 11 2003 math.sed
-rw-r--r-- 1 tom 42552 Oct 11 2003 sokoban.sed
Аналогично, программа sed имеет интересный пример:
#!/bin/sed -nf
# dc.sed - an arbitrary precision RPN calculator
# Created by Greg Ubben early 1995, late 1996
#
# Dedicated to MAC's memory of the IBM 1620 ("CADET") computer.
# @(#)GSU dc.sed 1.1 06-Mar-1999 [non-explanatory]
#
# Examples:
# sqrt(2) to 10 digits: echo "10k 2vp" | dc.sed
# 20 factorial: echo "[d1-d1
Аналогично, есть страница с цветная версия dc.sed
Однако в autoconf и скриптах сборки вы можете продуктивно использовать sed
.
Дополнительная литература: