마지막 명령의 출력을 sed에 인수로 전달

마지막 명령의 출력을 sed에 인수로 전달

기본적으로 xorg.conf의 올바른 위치에 무언가를 자동으로 추가하고 싶습니다. 조작하려는 줄의 줄 번호를 얻기 위해 몇 가지 명령을 사용했지만 전달 방법을 잘 모르겠습니다. 이 줄 번호(인수로 사용되며 조작할 항목이 아님)를 sed에 보냅니다. 나는 xargs에 대해 들었고 그에 대한 문서를 보았지만 몇 가지 읽고 실험한 후에는 작동하지 않는 것 같습니다.

누구든지 더 나은 방법을 완전히 생각할 수 있는 경우, 제가 자동화하고 싶은 프로세스는 "식별자"와 "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

정리했습니다(SynIRC의 #cogs에게 감사드립니다). 이 특정 문제에 대한 해결책은 다음과 같습니다.

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

관련 정보