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

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

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

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

Я зашел так далеко:

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

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

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

решение1

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

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

решение2

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

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

Связанный контент