2015-08-31 5 views
1

Я пытаюсь удалить какой-либо текст из файла, мне нужно найти номер строки, используя строку, а затем удалить из этой строки в конец файла.удалить последние N строк из файла bash

Я попытался использовать 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 -i '/<div class="col-wrapper">/Q' file1.txt 
+0

Ответ Anubahava уже отлично поработал, не могли бы вы объяснить разницу между GNU sed и обычным sed? – JONAS402

+0

@ JONAS402 GNU sed имеет дополнительные команды, см. [Здесь] (http://www.gnu.org/software/sed/manual/sed.html#Extended-Commands). В этом случае 'Q' завершает обработку файла без печати адреса, который он соответствует. Возможно, более эффективное решение, если файл длинный и совпадение рядом с файлом. – potong

Смежные вопросы