Видалення рядків з файлу за допомогою Sed

Утиліта Unix 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.txt

sed '/./!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 
Попередня Стаття Наступна Стаття

Кращі Поради