Sed: Удалите между первыми n строками тех с данной строкой в них

Настройки локали установлены как переменные среды процессом входа в систему (который читает /etc/default/locale) и наследованный дочерними процессами. Если Вы входите в систему новой сессии, новые настройки вступают в силу на новой сессии.

Можно установить настройки, сразу вступают в силу в оболочке путем выдачи команды

. /etc/default/locale

(отметьте ведущую точку). Если Вы добавили категорию, которая не была установлена прежде, Вы должны будете export это. При удалении категории Вы должны будете unset это.

Изменение настроек в оболочке влияет на все приложения, впоследствии запущенные той оболочкой (как долго, поскольку они используют системные настройки локали и не их собственный метод конфигурации).

2
08.06.2014, 20:38
2 ответа

По крайней мере, с GNU sed, кажется, можно сделать

sed '1,30{/pattern/d}' file

Тест в уменьшенном масштабе: учитывая файл как

some line
pattern
other line
some line
pattern
other line

, а затем

$ sed '1,3{/pattern/d}' file
some line
other line
some line
pattern
other line
4
27.01.2020, 21:57

Вы можете комбинировать sed с головой и хвостом :

( head -n30 file | sed '/pattern/d' ; tail -n+31 file ) > newfile

или использовать Perl:

perl -i~ -ne 'print if $. > 30 or not /pattern/' file
1
27.01.2020, 21:57

Теги

Похожие вопросы