将最后一个命令的输出作为参数传递给 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

已对其进行分类(感谢 SynIRC 上的 #cogs),此特定问题的解决方案如下:

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

相关内容