2015-08-31 45 views
1

我想從文件中刪除一些文本,我需要使用一個字符串找到行號,然後從該行刪除該文件的結尾。從文件bash中刪除最後N行

我試過使用sed並使用字符串作爲搜索字詞輸出到一個新文件,但它不保留行,它只是將整個文件打印在一行上,這對腳本的其餘部分依賴於該文件沒有幫助行號。 到目前爲止我的代碼是:

file=$(sed -ie '/<div class="col-wrapper">/,$d' < file1.txt) 
echo $file > file.txt 

回答

2

你可以使用內聯編輯在sed

sed -i '/<div class="col-wrapper">/,$d' file1.txt 

到更改保存到file1.txt

+1

該死的,我以爲我試過了!現在我覺得完全愚蠢!非常感謝!! – JONAS402

1

這可能爲你工作(GNU SED):

sed -i '/<div class="col-wrapper">/Q' file1.txt 
+0

Anubahava的回答很好,你能解釋一下GNU sed和普通sed之間的區別嗎? – JONAS402

+0

@ JONAS402 GNU sed具有addional命令,參見[這裏](http://www.gnu.org/software/sed/manual/sed.html#Extended-Commands)。在這種情況下,'Q'退出文件的處理而不打印它匹配的地址。如果文件很長,並且靠近文件前面的匹配,也許是更有效的解決方案。 – potong