NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
BG

Linux команди и умения за командни обвивки

sed: Редактиране на потоци без отваряне на редактор

sed редактира настрани: цели потоци от текст преминават през него, излизат трансформирани и не се отваря редактор. Неговата репутация идва от -i, който превръща заместване от един ред в групова операция в хиляди файлове, и от историите за бедствия на администратори, които го изпълняват без резервен суфикс. Безопасният работен процес никога не се променя: изпълнете замяната видима, потвърдете изхода, след това добавете -i със суфикс и запазете изходния код.

Ключови точки

  • Преглед преди да се ангажирате: файлът sed -n '10,20p' показва диапазон от редове, а същата комбинация -n плюс p отпечатва само редове, които съответстват на регулярен израз или адрес.
  • Заменете с флагове, които правят това, което имате предвид: s/old/new/g за всички съвпадения, число като 2g само за второто и -E за разширен регулярен израз без страница с обратна наклонена черта.
  • Редакциите на място получават суфикс, без изключения: приложението sed -i.bak 's/http:/https:/g' запазва резервно копие със същото име до всяка промяна; този суфикс е спасил повече внедрявания, отколкото хронологията на отмените на всеки редактор.
  • Разделителите са безплатни: s|/var/www|/srv/app|g (или s#...#g) избягва битките за избягване на наклонена черта, когато шаблонът ви е пълен с пътища.
  • -i не е атомарно: срив или лош регулярен израз в средата на партида веднъж остави наполовина пренаписани файлове, така че груповите задачи се изпълняват срещу копия или git-проследени дървета, никога единственото копие.
  • GNU и BSD sed не са съгласни относно -i: BSD изисква суфикса преди скрипта (sed -i '' работи на macOS, не е синтаксис на Linux), което е още една причина скриптовете за преносимост да избягват изцяло -i.
  • Изтриване и изолиране са честни глаголи: 'd' премахва съответстващите редове (sed '/^#/d' премахва коментарите), а -n с диапазон изолира раздел; и двете се четат по-добре от умни замествания.
  • Всичко след едноредови редакции, буквални многоредови блокове или съединявания със състояние принадлежи към awk или реален скрипт; принуждаването на sed да върши работа на програмист е начинът, по който се раждат нечетливи едноредови текстове.

Бележка от терен

Първият ми sed -i без суфикс .bak удари производствена конфигурация на nginx точно преди следобедния пик на трафика. Оттогава всяка редакция на място носи суфикс за резервно копие и аз прочетох изхода на сухо, преди -i дори да се доближи до командата.

Често задавани въпроси

Как да редактирам само редове, които съвпадат с нещо друго?

Обърнете внимание на тях: sed '/cache/s/true/false/' преобръща true към false само на редовете на кеша и диапазони като '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' обхват редакции на блокове; адресът е първи, командата - втора.

Защо sed няма да съответства на краищата на редовете в редактиран от Windows файл?

Тези редове завършват със знаци за връщане на каретка, които '$' котвите не очакват; първо ги премахнете с tr или нормализирайте по пътя, а многоредовото съдържание все още принадлежи на awk или Perl с -0777.

Sed по-бърз ли е от awk за прости замествания?

Маргинално и без значение; и двете завършват за милисекунди на файлове с размер на конфигурация. Избирайте според четливостта, защото колегата трябва да разчисти едноредовия ви текст за шест месеца.

Мога ли да вмъкна цели конфигурационни блокове със sed?

Да: „a“ добавя след, „i“ вмъква преди и „c“ замества реда, но поддържайте вмъкнатия текст прост и едноцелеви; реалните блокове принадлежат към шаблонен файл или правилна стъпка за осигуряване.

Как Kinetikatech помага с linux команди и умения за командни обвивки

Честно казано, повечето екипи идват при нас, след като първо са опитали сами: Командите и скриптовите навици, които решават дали администраторът управлява сървър или се бори с него: търсене, трансформиране, прехвърляне и надзор на текст и процеси с инструментите, които се намират във всяка основна инсталация. Услугата ни Сигурност на Linux сървъра и Сървърна администрация съществува, за да не се запознавате с linux команди и умения за командни обвивки по трудния начин; ние се занимаваме с въвеждането, наблюдението и изненадите в три през нощта.

Говорете с инженер

Проблем със сървъра? Уебсайт хакнат? Бавно зареждане?

Критичните проблеми се разрешават за 30 минути — 24/7.

Поискайте спешна помощ support@kinetikatech.com