2011-01-23 2 views

ответ

0

Если ваш скрипт является сценарием sed, вы можете просто удалить эту часть и поместить ее в стандартный сценарий оболочки. например

#!/usr/bin/sed -f 

1 { 
    x 
    s/^$/  /
    s/^.*$/&&&&&&&&/ 
    x 
} 

в

#!/bin/sh 

export LANG=C 

/usr/bin/sed ' 
1 { 
    x 
    s/^$/  /
    s/^.*$/&&&&&&&&/ 
    x 
} 
' "[email protected]" 

(из примера в документе sedinfo.)

С задней "[email protected]", он должен передать аргументы и обрабатывать стандартный ввод таким же образом.

+1

Используйте '«$ @»'; двойные кавычки имеют решающее значение. Без них $ @ совпадает с $ * и уничтожает пробелы в именах файлов (точнее, он рассматривает их как разделители и разбивает имя на две или более штук, переданных как отдельные аргументы). ** Всегда ** используйте '' $ @ "' (ну, почти всегда, «всегда», пока не узнаете, почему вам не нужно в каком-то частном случае - в общем случае вы используете '' $ @ "' и не думайте дважды об этом). –

+0

Отличная точка, спасибо. –

2

Нет, но вам не обязательно. Вы можете установить переменную envirinment перед выполнением команды sed.

0

Вы можете установить переменные окружения так, что она активна только для единичного вызова команды или сценария:

LANG=C sed ... 

или

LANG=C sedscript 
Смежные вопросы