Видалення рядків з файлу за допомогою Sed
Ця команда Unix використовується для обробки командного рядка . Ця утиліта може бути використана для видалення виразів з файлу, який може бути ідентифікований за допомогою вказівника роздільника (наприклад, кома, табуляції або пробілу), за номером рядка або шляхом пошуку рядка, виразу або адреси рядка в синтаксис Sed.
Sed: Видалити один або більше рядків з файлу
Ось як видалити одну або більше рядків з файлу.Синтаксис
sed '[/] d'sed '{[/] [, ] [/] d'
/.../ = роздільники
n = номер рядка
string = string знаходиться в рядку
regex = регулярний вираз, що відповідає шуканому шаблону
addr = адреса рядка (номер або шаблон)
d = видалити
Приклади Sed
Ось кілька прикладів використання вищевказаного синтаксису.Використовуйте наступний код для видалення третього рядка:
sed '3d' fileName.txt
Видалити рядок, що містить рядок "awk", за допомогою:
sed '/ awk / d' filename.txt
Останній рядок можна видалити, ввівши:
sed '$ d' filename.txt
Або видалити всі порожні рядки через:
sed '/ ^ $ / d' filename.txtsed '/./!d' filename.txt
Вилучити відповідність рядка регулярним виразом (усунувши один із цифрових символів, принаймні 1 цифру, розташовану в кінці рядка):
sed '/ [0-9 /] [0-9] * $ / d' filename.txt
Видаліть інтервал між рядками 7 і 9:
sed '7, 9d' filename.txt
Така ж операція, як і вище, але замінюючи адресу параметрами:
sed '/ -Start /, / - End / d' filename.txt
Наведені вище приклади змінюються лише на дисплеї файлу (stdout1 = екран).
Для постійних змін старих версій (<4) використовуйте тимчасовий файл для GNU sed, використовуючи "-i [суфікс]" :
sed -i ".bak" '3d' filename.txt