Передача вывода последней команды sed в качестве аргумента

По сути, я хочу автоматизировать добавление чего-то в xorg.conf в нужном месте, я использовал некоторые команды, чтобы получить номер строки, которой я хочу манипулировать, но я не совсем уверен, как пройти передачу этот номер строки (как аргумент, а не что-то, что нужно манипулировать) для sed. Мне рассказали о xargs и посмотрели на него документы, но после некоторого чтения и экспериментов я не могу заставить его работать.

В случае, если кто-то может придумать лучший метод полностью, процесс, который я хочу автоматизировать, - это просто найти строку, содержащую и "Identifier", и "Monitor0" (будет только один), и добавить строку под ним. Проблема с нахождением Monitor0 и манипулированием этой строкой состоит в том, что есть несколько строк с Monitor0 в.

Я получил это далеко:

fgrep -n "Monitor0" </etc/X11/xorg.conf | fgrep "Identifier" | cut -f1 -d:

Это выдает номер строки, которую я хочу передать в sed, но я не совсем уверен, как это сделать.

... или есть более простой способ, которого я не вижу?

2 ответа

Решение

Сортировка (спасибо #cogs на SynIRC), решение для этой конкретной проблемы заключается в следующем:

sed '/\bIdentifier\b.*\bMonitor0\b/ a\\tOption "NoDDC"'

Я могу придумать платформу для этого в Perl-скрипте, но у меня нет такого опыта работы с sed, так что вам придется взять суть детали.

Напишите perl-скрипт, который сначала идентифицирует строку (а не номер строки), к которой вы должны добавить. (Что-то вроде: $line = system("fgrep -n ...");) Затем запустите sed следующим образом:sed s/$line/$line.'\n'.$linetoadd/ <$oldfile >$newfile,

Другие вопросы по тегам