2014-01-28 2 views
1

У меня есть СЭД-файл, который содержит содержит несколько замен, она выполняется на файл, используя следующий синтаксис:Как проверить переменную linux в файле sed?

sed -f mysedfile file.txt > fixed_file.txt 

Я хотел бы проверить системную переменную и в зависимости от того, что эта переменная содержит, выполнять разные СЭД операции над file.txt.

Можно ли поместить эту логику в mysedfile?

Благодарим за помощь.

+1

Я сомневаюсь, что это возможно с помощью [tag: sed]. Вам нужно будет вызвать скрипт оболочки, проверить там переменные и вызвать [tag: sed] из этого скрипта. – pfnuesel

+1

Возможно, вам лучше использовать 'awk' или' perl'. –

ответ

1

Perl был явно создан, чтобы обойти ограничения sed и awk. Режим -p запускает скрипт для каждой строки в файле. Вы можете поместить его в командной строке:

perl -p -e "s/foo/\$ENV{'HOME'}/e" < files.txt 

Или переместить скрипт в файл (вы можете удалить «\» перед $)

perl -p file.pl < files.txt 

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

#!/usr/bin/perl -p 
+0

еще раз используйте Python или Ruby ... – Oz123

Смежные вопросы