只要有不悍然多行被刪除,你是不是用的sed
(在同一時間,sed
在HP-UX僅限於有關遠遠限量版本工作的系統上100個指令),那麼你可以使用:
sed 's/$/d/' linenum.txt | sed -f - file.txt
這將使用第一sed
的行號轉換成刪除命令(請注意你的麻煩的部分是一個流浪不必要的斜槓),然後告訴第二sed
閱讀從標準輸入(-f -
)的腳本,並把它應用到file.txt
。
上述工作與GNU sed
;它不適用於Mac OS X 10.7.5上的BSD sed
(sed: -: No such file or directory
)。在您的系統上使用它之前對其進行測試。
當然,如果您有足夠的最新版本bash
(適用於bash
4.2但不適用於3。2),那麼你可以使用「進程替換」來解決的sed
限制:
sed -f <(sed 's/$/d/' linenum.txt) file.txt
如果這也不行,你可以第一sed
命令的輸出寫入到一個文件,然後使用該(臨時)文件作爲sed
腳本的名稱。所以,有很多方法可以做到這一點。然而,任何超過3個進程(的sed
兩分和一個rm
)是奢侈的。如果你只需要做一次,這可能不是一個問題,但如果你一分鐘要做很多次,這可能是一個問題。
所以你已經列出了需要的線2號文件,從第一個文件被刪除? –
謝謝。該腳本正在工作,但不會刪除線條。我使用sed命令是否錯誤? – MFK
@ sampson-chen是的 – MFK