基本上,我想自動在 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"'