將最後一個指令的輸出作為參數傳遞給 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"'

相關內容