edposix - онлайн у хмарі

Це команда edposix, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS.

ПРОГРАМА:

ІМ'Я


ed — редагувати текст

СИНТАКСИС


ed [−стр рядок] [−s] [файл]

ОПИС


Команда ed Утиліта — це рядково-орієнтований текстовий редактор, який використовує два режими: команда режим та вхід
режим. У командному режимі введені символи інтерпретуються як команди, а у режимі введення
в режимі вони повинні інтерпретуватися як текст. Дивіться розділ РОЗШИРЕНИЙ ОПИС.

Якщо операнд є '−', результати не уточнені.

ВАРІАНТИ


Команда ed утиліта повинна відповідати тому Base Definitions POSIX.1-2008, розділ 12.2,
Утиліта синтаксис керівні вказівки, за винятком невизначеного використання '−'.

Підтримуються такі варіанти:

−стр рядок Скористайтеся кнопкою рядок як рядок підказки в командному режимі. За замовчуванням має бути
немає рядка підказки.

−s Придушити запис кількості байтів на e, E, r та w команд і з '!'
підказка після !команда.

ОПЕРАНДИ


Підтримується наступний операнд:

файл Якщо файл наводиться аргумент, ed повинні імітувати a e команду для файлу з ім'ям
за назвою шляху, файл, перш ніж приймати команди зі стандартного введення.

STDIN


Стандартним введенням має бути текстовий файл, що складається з команд, як описано в
розділ РОЗШИРЕНИЙ ОПИС.

ВХІД ФАЙЛИ


Вхідні файли мають бути текстовими файлами.

НАВКОЛИШНЄ СЕРЕДОВИЩЕ ЗМІННІ


Наступні змінні середовища мають впливати на виконання ed:

ГОЛОВНА Визначте шлях до домашнього каталогу користувача.

МОВА Надайте значення за замовчуванням для змінних інтернаціоналізації, які не встановлені або
нуль. (Дивіться том Base Definitions POSIX.1-2008, розділ 8.2,
Internationalization Змінні за пріоритет інтернаціоналізації
змінні, що використовуються для визначення значень категорій мовного стандарту.)

LC_ALL Якщо встановлено не порожнє значення рядка, замініть значення всіх інших
змінні інтернаціоналізації.

LC_COLLATE
Визначте місцевість для поведінки діапазонів, класів еквівалентності та мульти-
елементи порівняння символів у регулярних виразах.

LC_CTYPE Визначте локаль для інтерпретації послідовностей байтів текстових даних
як символи (наприклад, однобайтові на відміну від багатобайтових символів у
аргументи та вхідні файли) і поведінку класів символів у звичайних
вирази.

LC_MESSAGES
Визначте місцевий стандарт, який слід використовувати для впливу на формат і вміст
діагностичні повідомлення, записані в стандартну помилку, та інформаційні повідомлення
на стандартний вихід.

NLSPATH Визначте розташування каталогів повідомлень для обробки LC_MESSAGES.

АСИНХРОННИЙ ПОДІЇ


Команда ed Утиліта повинна виконувати стандартні дії для всіх сигналів (див. АСИНХРОННІ ПОДІЇ
розділ в розділ 1.4, Утиліта Опис Типово) за такими винятками:

SIGINT The ed утиліта перериває свою поточну діяльність, записує рядок "?\n" до
стандартний вихід і поверніться до командного режиму (див. РОЗШИРЕНИЙ ОПИС
розділ)

SIGHUP Якщо буфер не порожній і змінився з моменту останнього запису, то ed утиліта
спробує записати копію буфера у файл. Спочатку файл з іменем
ed.hup в поточному довіднику використовується; якщо це не вдається, файл з ім’ям
ed.hup в каталозі, названому ГОЛОВНА має використовуватися змінна середовища. в
в будь-якому випадку, ed утиліта має вийти без запису файлу в поточний
запам'ятати ім'я шляху і без повернення до командного режиму.

SIGQUIT The ed утиліта ігнорує цю подію.

ВИСТАВКА


Різні команди редагування та функція підказок (див −стр) записати в стандартний вихід, як
описано в розділі РОЗШИРЕНИЙ ОПИС.

STDERR


Стандартна помилка повинна використовуватися лише для діагностичних повідомлень.

ВИХІД ФАЙЛИ


Вихідні файли мають бути текстовими файлами, формати яких залежать від команд редагування
дано.

ПОВЕРНЕНІ ОПИС


Команда ed утиліта повинна працювати з копією файлу, який вона редагує; зміни, внесені до копії
не матиме впливу на файл до a w Дана команда (запис). Копія тексту
називається буфера.

Наказує до ed мають просту й регулярну структуру: нуль, один або два адреси потім
одним символом команда, за яким, можливо, слідують параметри цієї команди. Ці
адреси вказують один або кілька рядків у буфері. Кожна команда, яка вимагає адреси
має адреси за замовчуванням, тому адреси дуже часто можна опускати. Якщо −стр варіант
якщо вказано, рядок підказки має бути записаний у стандартний висновок перед виконанням кожної команди
читати

Загалом, у рядку може з’явитися лише одна команда. Певні команди дозволяють тексту бути
введення. Цей текст розміщується у відповідному місці буфера. Поки ed приймає
текст, як кажуть, в вхід режим. У цьому режимі команди не розпізнаються; всі
вхідні дані просто збираються. Режим введення завершується введенням рядка, що складається з двох
символи: а ("."), а потім а . Цей рядок не вважається частиною
введеного тексту.

регулярний Вирази in ed
Команда ed Утиліта повинна підтримувати основні регулярні вирази, як описано в Base
Том визначень POSIX.1-2008, розділ 9.3, Базовий регулярний Вирази. Так як регулярні
вирази в ed завжди збігаються з окремими рядками (за винятком кінцевих
символів), ніколи проти будь-якого більшого розділу тексту, немає способу для a
регулярний вираз для відповідності a .

Нульовий RE має бути еквівалентним останньому зустрічному RE.

Регулярні вирази використовуються в адресах для визначення рядків, а також у деяких командах (for
Наприклад, s команда substitute), щоб вказати частини рядка, які потрібно замінити.

Адреси in ed
Звертаючись в ed відноситься до поточного рядка. Як правило, поточний рядок є останнім
під впливом команди. Номер поточного рядка – це адреса поточного рядка. Якщо
буфер редагування не порожній, початкове значення для поточного рядка має бути останнім рядком
буфер редагування; інакше нуль.

Адреси повинні бути побудовані таким чином:

1 персонаж (".") має звертатися до поточного рядка.

2. В персонаж ('$') адресуватиме останній рядок буфера редагування.

3. Додатне десяткове число n звертатися до nй рядок буфера редагування.

4 -x пара символів ("'x") має адресувати рядок, позначений позначкою
іменний персонаж x, яка має бути малою літерою з набору переносимих символів.
Це буде помилкою, якщо символ не був встановлений для позначення рядка або якщо рядок
позначений на даний момент відсутній у буфері редагування.

5. BRE, укладений символи ('/') адресуватиме перший рядок, знайдений за допомогою
пошук вперед від рядка, що йде за поточним рядком до кінця редагування
буфера і зупиняючись на першому рядку, для якого рядок без завершення
відповідає BRE. BRE, що складається з нульового BRE, розділеного парою
символи повинні звертатися до наступного рядка, для якого рядок виключає
припинення відповідає останньому BRE. Крім того, другий
можна опустити в кінці командного рядка. В рамках BRE, a
- пара ("\/") позначатиме літерал замість BRE
роздільник. Якщо необхідно, пошук має завершитися до початку буфера
і продовжуйте до поточного рядка включно, щоб весь буфер був
шукали.

6. BRE, укладений символи ('?') адресуватиме перший знайдений рядок
шляхом пошуку назад від рядка, що передує поточному рядку, до початку
буфера редагування та зупиняючись на першому рядку, для якого рядок виключає
припинення відповідає BRE. BRE, що складається з нульового BRE, розділеного символом a
пара символи ("??") має звертатися до попереднього рядка, для якого
рядок без кінцевого відповідає останньому BRE. в
крім того, другий можна опустити в кінці командного рядка.
В рамках BRE, a - пара ("\?") позначатиме літерал
замість роздільника BRE. При необхідності обшук загортається
навколо до кінця буфера і продовжувати до поточного рядка включно, т
що весь буфер шукається.

7. А ('+') або персонаж ('−'), за яким слід десяткове число
адресувати поточний рядок плюс чи мінус число. А або характер
без десяткового числа, має звертатися до поточного рядка плюс-мінус 1.

За адресами може слідувати нуль або більше зміщень адреси, за бажанням - відокремлені.
Зміщення адрес будуються таким чином:

* А або символ, за яким слід десяткове число, додається або
відняти, відповідно, вказану кількість рядків до або від адреси. А
знак> або символ, за яким не йде десяткове число, додає або віднімає 1
до або з адреси.

* Десяткове число додає вказану кількість рядків до адреси.

Не повинно бути помилкою, якщо проміжне значення адреси буде менше нуля або більше
ніж останній рядок у буфері редагування. Це має бути помилкою для кінцевого значення адреси
бути меншим за нуль або більшим за останній рядок у буфері редагування. Це буде помилка
якщо пошук BRE не вдається знайти відповідний рядок.

Команди приймають нуль, одну або дві адреси. Якщо більше необхідної кількості адрес
надаються команді, яка вимагає нульових адрес, це має бути помилкою. інакше
якщо для команди надано більше необхідної кількості адрес, адреси
зазначені спочатку оцінюються, а потім відкидаються до досягнення максимальної кількості дійсних
адреси залишаються для вказаної команди.

Адреси повинні бути відокремлені одна від одної символом a (',') або характер
(';'). У разі а роздільник, поточний рядок (".") має бути встановлено на
перша адреса, і лише потім буде обчислена друга адреса. Ця функція може
використовуватися для визначення стартової лінії для прямих і зворотних пошуків; дивіться правила 5.
і 6.

Адреси можна пропустити з обох боків або роздільник, в якому
у випадку отримані пари адрес мають бути такими:

┌───────────┬──────────────┐
ЗазначенийРезультат
├───────────┼──────────────┤
│, │ 1 , $ │
│, адрес │ 1 , адрес │
│адреса, │ адреса, адреса │
│; │ . ; $ │
│; адрес │ . ; адрес │
│addr ; │ адреса; адрес │
└───────────┴──────────────┘
Будь-який символи між адресами, роздільниками адрес або зміщеннями адрес
буде проігноровано.

Команди in ed
У наступному списку ed команд, адреси за замовчуванням відображаються в дужках. The
Кількість адрес, показаних за замовчуванням, має бути числом, очікуваним командою. The
дужки не є частиною адреси; вони показують, що дані адреси є
за замовчуванням.

Як правило, неприпустимо, щоб у рядку з’явилося більше однієї команди. Проте будь-який
команда (крім e, E, f, q, Q, r, w та !) може бути суфіксом букви l, nабо p, У
який випадок, за винятком l, n та p команд, команда повинна бути виконана, а потім
новий поточний рядок має бути записаний, як описано нижче під l, n та p команди.
Коли l, nабо p суфікс використовується з an l, nабо p команда, команда має написати
стандартний вихід, як описано нижче, але не вказано, чи записує суфікс
поточний рядок знову в запитаному форматі, або чи суфікс не впливає. Для
Наприклад, pl команда (база p команда з l суфікс) або писати тільки
поточний рядок або напишіть його двічі — один раз, як зазначено для p і один раз, як зазначено для l. Крім того,
g, G, v та V команди повинні приймати команду як параметр.

Кожному компоненту адреси може передувати нуль або більше символів. Команда
Перед літерою може передувати нуль або більше символів. Якщо суфіксальна буква (l, nабо p)
надано, програма має гарантувати, що вона негайно слідує команді.

Команда e, E, f, r та w команди мають приймати необов'язковий файл параметр, відокремлений від
командний лист одним або кількома символів.

Якщо зміни були внесені в буфер після останнього w команду, яка написала все
буфер, ed попереджає користувача, якщо буде зроблена спроба знищити буфер редактора через
e or q команди. The ed утиліта запише рядок:

"?\n"

(далі пояснювальне повідомлення, якщо допомога режим було ввімкнено через H команда) до
стандартний вихід і продовжується в командному режимі із незмінним поточним номером рядка.
Якщо e or q команда повторюється без жодної команди, вона набирає чинності.

Якщо термінал від’єднається (див. том Base Definitions POSIX.1-2008, Глава 11,
Загальне термінал інтерфейс, Відключення модему та закриття терміналу пристрою), виявлено:

* Якщо супроводжується сигналом SIGHUP, ed утиліта повинна працювати, як описано в п
Розділ АСИНХРОНИХ ПОДІЙ для сигналу SIGHUP.

* Якщо не супроводжується сигналом SIGHUP, ed утиліта діятиме як кінець файлу
було виявлено на стандартному введенні.

Якщо на стандартному вводі виявлено кінець файлу:

* Якщо ed утиліта в режимі введення, ed повинен припинити режим введення та повернутися до
командний режим. Чи не вказано частково введені рядки (тобто введений текст
без припинення ) відкидаються з введеного тексту.

* Якщо ed утиліта перебуває в командному режимі, вона повинна діяти так, ніби a q була введена команда.

Якщо закриваючий роздільник RE або рядка заміни (наприклад, '/') в g, G,
s, vабо V команда буде останнім символом перед a , цей роздільник може бути
пропущено, і в цьому випадку слід записати адресований рядок. Наприклад, наступне
пари команд еквівалентні:

с/с1/с2 с/с1/с2/стор
г/с1 г/с1/п
?s1 ?s1?

Якщо введено неправильну команду, ed напише рядок:

"?\n"

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

Додавати Command
конспект:
(.)а
<текст>
.

Команда a команда читає даний текст і додає його після адресованого рядка; в
номер поточного рядка стає адресою останнього вставленого рядка або, якщо такі були
немає, адресований рядок. Для цієї команди має бути дійсна адреса 0; це призведе до
доданий текст, який буде розміщено на початку буфера.

Редагувати Command
конспект:
(.,.)c
<текст>
.

Команда c Команда видаляє адресовані рядки, а потім приймає введений текст, який їх замінює
лінії; поточний рядок має бути встановлений на адресу останнього рядкового введення; або, якщо є
були відсутні, у рядку після останнього видаленого рядка; якщо видалені рядки були спочатку
в кінці буфера поточний номер рядка встановлюється на адресу нового
останній рядок; якщо в буфері не залишилося жодного рядка, поточний номер рядка встановлюється на нуль.
Для цієї команди має бути дійсна адреса 0; його слід інтерпретувати так, як якщо б адреса 1 була
вказано.

видаляти Command
конспект:
(.,.)d

Команда d команда видаляє адресовані рядки з буфера. Адреса лінії
після останнього видаленого рядка стає номером поточного рядка; якщо рядки видалено
були спочатку в кінці буфера, поточний номер рядка має бути встановлений на
адреса нового останнього рядка; якщо в буфері не залишилося жодного рядка, поточний номер рядка
має бути встановлено на нуль.

Редагувати Command
конспект:
e [файл]

Команда e Команда має видалити весь вміст буфера, а потім прочитати у файлі
названий за ім'ям шляху файл. Поточний номер рядка встановлюється на адресу
останній рядок буфера. Якщо не вказано ім’я шляху, поточне ім’я шляху, яке запам’ятовується, якщо
будь-який, слід використовувати (див f команда). Необхідно записувати кількість прочитаних байтів
стандартний вихід, якщо не −s був вказаний параметр у такому форматі:

"%d\n", <номер of bytes зчитування>

Ім'я файл запам’ятовується для можливого використання в подальшому як ім’я шляху за замовчуванням e,
E, r та w команди. Якщо файл замінюється на '!', решту рядка слід перевести до
бути командним рядком оболонки, вихідні дані якого потрібно прочитати. Такого командного рядка оболонки бути не повинно
запам'ятовується як поточний файл. Усі позначки будуть скасовані після завершення а
успішний e команда. Якщо буфер змінився з моменту останнього разу, коли весь буфер був
написаному, користувач має бути попереджений, як описано раніше.

Редагувати Без Перевірка Command
конспект:
E [файл]

Команда E команда має володіти всіма властивостями та обмеженнями e команда, крім цього
редактор не повинен перевіряти, чи були внесені зміни в буфер з тих пір
останній w команда

ім'я файлу Command
конспект:
f [файл]

If файл дається, f команда змінить поточний згаданий шлях на файл;
Незалежно від того, змінено ім’я чи ні, він повинен написати поточний (можливо новий).
запам'ятати шлях до стандартного виводу в такому форматі:

"%s\n", <ім'я шляху>

Поточний номер рядка залишається незмінним.

Глобальний Command
конспект:
(1,$)г/RE/команда список

Перейдіть на вкладку g Першим кроком є ​​позначення кожного рядка, для якого рядок виключено
припинення відповідає заданому RE. Потім, переходячи послідовно від
від початку файлу до кінця файлу, дане команда список підлягає виконанню за
кожен позначений рядок з поточним номером рядка, встановленим на адресу цього рядка. Будь-яка лінія
змінений команда список має бути без маркування. Коли g команда завершена, поточний
номер рядка повинен мати значення, призначене останньою командою в команда список. Якщо
не було відповідних рядків, поточний номер рядка не буде змінено. Одинокий
команда або перша зі списку команд повинні з'являтися в тому ж рядку, що й глобальна
команда. Усі рядки багаторядкового списку, окрім останнього рядка, мають закінчуватися символом a
що передує припиненню ; в a, i та c команди та пов’язані
введення дозволено. The "." Режим завершення введення можна опустити, якщо це буде
останній рядок команда список. Порожній команда список має бути еквівалентним до p команда
Використання g, G, v, V та ! команди в команда список дає невизначені результати.
Будь-який символ, крім або можна використовувати замість a розмежувати
RE. Усередині RE сам роздільник RE можна використовувати як літеральний символ, якщо він є
передує а .

інтерактивний Глобальний Command
конспект:
(1,$)G/RE/

Перейдіть на вкладку G Першим кроком є ​​позначення кожного рядка, для якого рядок виключено
припинення відповідає заданому RE. Тоді для кожного такого рядка цей рядок буде
буде записано, поточний номер рядка має бути встановлений на адресу цього рядка, і будь-який
команда (крім однієї з a, c, i, g, G, v та V команди) повинні бути прочитані та
виконано. А буде діяти як нульова команда (не спричиняючи жодних дій щодо
поточний рядок); an '&' призведе до повторного виконання останньої ненульової команди
виконується в рамках поточного виклику G. Зауважте, що команди, які вводяться як частина файлу
виконання G Команда може адресувати будь-які рядки в буфері та впливати на них. Будь-яка лінія
змінені командою повинні бути не позначені. Кінцеве значення поточного номера рядка
має бути значенням, встановленим останньою успішно виконаною командою. (Зверніть увагу, що останній
успішно виконана команда G сама команда, якщо команда не вдається, або значення null
вказана команда.) Якщо не було відповідних рядків, поточний номер рядка не має
бути зміненим. The G Команда може бути завершена сигналом SIGINT. Будь-який символ, крім
або можна використовувати замість a для розмежування RE і the
заміна. Усередині RE сам роздільник RE можна використовувати як літеральний символ if
йому передує а .

Документи Command
конспект:
h

Команда h Команда повинна записати коротке повідомлення до стандартного виводу, яке пояснює причину
останній '?' сповіщення. Поточний номер рядка залишається незмінним.

Довідковий режим Command
конспект:
H

Команда H команда викликає ed щоб увійти в режим, у якому відображатимуться довідкові повідомлення (див h команда)
повинні бути записані в стандартний вихід для всіх наступних '?' сповіщення. The H команда
по черзі вмикати і вимикати цей режим; спочатку він вимкнений. Якщо режим допомоги є
будучи увімкненим, H команда також пояснює попередню '?' повідомлення, якщо таке було
один. Поточний номер рядка залишається незмінним.

Insert Command
конспект:
(.)i
<текст>
.

Команда i команда вставляє заданий текст перед адресованим рядком; поточний рядок
встановити останній вставлений рядок або, якщо його немає, адресований рядок. Ця команда
відрізняється від a команда лише у розміщенні введеного тексту. Адреса 0 має бути
діє для цієї команди; його слід інтерпретувати так, ніби вказано адресу 1.

Приєднатися Command
конспект:
(.,.+1)j

Команда j команда має об’єднати суміжні рядки, видаливши відповідні
символів. Якщо вказано рівно одну адресу, ця команда нічого не робить. Якщо рядки є
приєднаний, поточний номер рядка встановлюється на адресу приєднаного рядка; інакше,
поточний номер рядка залишається незмінним.

Відзначити Command
конспект:
(.)кx

Команда k команда має позначити адресований рядок іменем x, про що повинна бути заява
гарантує, що це мала літера з портативного набору символів. Адреса "'x" буде тоді
посилайтеся на цей рядок; поточний номер рядка залишається незмінним.

список Command
конспект:
(.,.)л

Команда l Команда повинна записати в стандартний висновок адресовані рядки у візуально недвозначному вигляді
форму. Символи, перелічені в томі Base Definitions POSIX.1-2008, таблиця 5-1,
Бігти Послідовності та Асоційований Дії ('\\', '\a', '\b', '\ f', '\ r', '\ t', '\ v') буде
бути записаний як відповідна вихідна послідовність; в '\ n' у цій таблиці не застосовується.
Недруковані символи, яких немає в таблиці, записуються як одне тризначне вісімкове число
(з попереднім символ) для кожного байта в символі (найбільш значущий
спочатку байт).

Довгі рядки повинні бути складені, а точка згину позначена передує а
; довжина, при якій відбувається згортання, не визначена, але має бути відповідною
для вихідного пристрою. Кінець кожного рядка позначається символом а '$' та '$' символи
у тексті пишеться з попереднім . An l команда може бути
додається до будь-якої іншої команди, крім e, E, f, q, Q, r, wабо !. Поточний рядок
номер встановлюється на адресу останнього записаного рядка.

Рухатися Command
конспект:
(.,.)мадреса

Команда m команда має перемістити адресовані рядки після рядка, до якого адресовано адреса.
Адреса 0 дійсна для адреса і спричинити переміщення адресованих рядків до
початок буфера. Це буде помилка, якщо адреса адреса входить в діапазон
переміщені рядки. Поточний номер рядка встановлюється на адресу останнього переміщеного рядка.

Номер Command
конспект:
(.,.)н

Команда n Команда повинна записати в стандартний висновок адресовані рядки перед кожним рядком
його номер рядка та a ; поточний номер рядка встановлюється на адресу
написаний останній рядок. The n команду можна додати до будь-якої команди, крім e, E, f, q, Q,
r, wабо !.

друк Command
конспект:
(.,.)с

Команда p команда повинна записати в стандартний висновок адресовані рядки; поточний номер рядка
встановлюється на адресу останнього записаного рядка. The p команду можна додати до будь-якої
команда, крім e, E, f, q, Q, r, wабо !.

Підказка Command
конспект:
P

Команда P команда викликає ed підказувати за допомогою an ('*') (або рядок, Якщо −стр is
зазначено) для всіх наступних команд. The P команда в якості альтернативи вмикає цей режим
включення і виключення; спочатку ввімкнеться, якщо −стр вказана опція; інакше вимк. The
поточний номер рядка залишається незмінним.

Вихід Command
конспект:
q

Команда q команда викликає ed щоб вийти. Якщо буфер змінився з моменту останнього разу
весь буфер був записаний, користувач має бути попереджений, як описано раніше.

Вихід Без Перевірка Command
конспект:
Q

Команда Q команда викликає ed щоб вийти, не перевіряючи, чи були внесені зміни
буфер з останнього w команда

Читати Command
конспект:
($)р [файл]

Команда r Команда читатиме файл із назвою шляху файл і додайте його після
адресована лінія. Якщо ні файл задано аргумент, поточне ім’я шляху, яке запам’ятовується, якщо є,
повинні використовуватися (див e та f команди). Ім’я шляху, яке зараз запам’ятовується, не повинно бути
змінено, якщо немає згаданого імені шляху. Адреса 0 дійсна для r і буде
спричинити читання файлу на початку буфера. Якщо читання пройшло успішно, і
−s не вказано, кількість прочитаних байтів має бути записана в стандартний вихід у файлі
такий формат:

"%d\n", <номер of bytes зчитування>

Поточний номер рядка встановлюється на адресу останнього прочитаного рядка. Якщо файл is
замінено на '!', решта рядка буде вважатися командним рядком оболонки, чий
вихід необхідно прочитати. Такий командний рядок оболонки не запам'ятовується як поточний
ім'я шляху.

Замінити Command
конспект:
(.,.)s/RE/заміна/прапори

Команда s Команда шукає в кожному адресованому рядку наявність вказаного RE і
замініть перший або всі (не перекриваються) відповідні рядки на заміна; подивитися
наступний опис g суфікс. Якщо заміна не вдається, це помилка
кожен адресований рядок. Будь-який символ, крім або можна використовувати замість
а розмежувати RE та заміну. Усередині RE сам роздільник RE
може використовуватися як буквальний символ, якщо йому передує a . Поточний рядок
встановлюється на адресу останнього рядка, на якому відбулася заміна.

An ('&'), що з'являється в заміна має бути замінено відповідністю рядка
RE на поточному рядку. Особливе значення '&' в цьому контексті можна придушити
передуючи йому . Як більш загальна риса, персонажі '\ n', Де n
є цифрою, замінюється текстом, що відповідає відповідній зворотній посиланням
вираз. Якщо відповідний вираз зворотного посилання не збігається, то
символи '\ n' буде замінено порожнім рядком. Коли характер '%' є єдиним
характер в заміна, заміна використовується в останній команді заміни
повинні використовуватися як заміна у поточній команді заміни; якби не було
попередня команда заміни, використання '%' таким чином буде помилкою. The '%'
втрачає своє особливе значення, якщо воно міститься в рядку заміни, що містить більше одного
символ або передує а . Для кожного зустрічається при скануванні
заміна від початку до кінця наступний символ втрачає своє особливе значення
(якщо хто-небудь). Не вказано, яке особливе значення надається будь-якому символу, крім
, '&', '%', або цифри.

Рядок можна розділити, підставивши а в це. Заявка має це забезпечити
втікає від в заміна передуючи йому . Такий
заміна не може бути здійснена як частина a g or v команда список. Поточний номер рядка
встановлюється на адресу останнього рядка, на якому виконується заміна. Якщо ні
виконується заміна, поточний номер рядка залишається незмінним. Якщо лінія розділена,
заміна вважається виконаною на кожному з нових рядків для
з метою визначення нового поточного номера рядка. Розглядається заміна
були виконані, навіть якщо рядок заміни ідентичний рядку, який він
замінює.

Додаток має гарантувати, що значення прапори дорівнює нулю або більше:

вважати Замінник для вважатиу кожному адресованому рядку зустрічається тільки RE.

g Глобально замінити всі не перекриваються екземпляри RE, а не просто
Перший. Якщо обидва g та вважати вказано, результати не уточнені.

l Запишіть у стандартний висновок останній рядок, у якому була здійснена заміна. Лінія
повинні бути написані у форматі, визначеному для l команда

n Запишіть у стандартний висновок останній рядок, у якому була здійснена заміна. Лінія
повинні бути написані у форматі, визначеному для n команда

p Запишіть у стандартний висновок останній рядок, у якому була здійснена заміна. Лінія
повинні бути написані у форматі, визначеному для p команда

Скопіювати Command
конспект:
(.,.)tадреса

Команда t команда має бути еквівалентною m команди, за винятком того, що копія адресованого
рядки розміщуються після адреси адреса (який може бути 0); поточний номер рядка
встановлюється на адресу останнього доданого рядка.

розстібати Command
конспект:
u

Команда u Команда анулює дію останньої команди, яка щось змінила
в буфері, а саме останній a, c, d, g, i, j, m, r, s, t, u, v, Gабо V команда
Усі зміни, внесені в буфер а g, G, vабо V глобальна команда повинна бути скасована як a
разова зміна; якщо глобальна команда не вносила жодних змін (наприклад, with g/RE/p) u
команда не матиме ніякої дії. Поточний номер рядка має бути встановлений на значення, яке він мав
безпосередньо перед початком команди, що відмінюється.

Глобальний Не відповідає Command
конспект:
(1,$)v/RE/команда список

Ця команда має бути еквівалентною глобальній команді g за винятком тих рядків, які є
під час першого кроку позначаються ті, для яких рядок, що не враховує кінцевий
не відповідає RE.

інтерактивний Глобальний Не збігаються Command
конспект:
(1,$)V/RE/

Ця команда має бути еквівалентною інтерактивній глобальній команді G хіба що рядки
що позначаються під час першого кроку, мають бути ті, для яких рядок без урахування
припинення не відповідає RE.

Запис Command
конспект:
(1,$)w [файл]

Команда w Команда запише адресовані рядки у файл, названий за ім'ям шляху файл.
Команда створює файл, якщо він не існує, або замінює його вміст
наявний файл. Ім’я шляху, що запам’ятовується, не може бути змінено, якщо немає
немає згаданого імені шляху. Якщо не вказано ім’я шляху, поточне ім’я шляху, яке запам’ятовується, якщо
будь-який, слід використовувати (див e та f команди); поточний номер рядка залишається незмінним.
Якщо команда виконана успішно, кількість записаних байтів записується до стандартного
вихід, якщо не −s був вказаний параметр у такому форматі:

"%d\n", <номер of bytes письмовий>

If файл починається з '!', решту рядка слід вважати командним рядком оболонки
стандартним введенням яких є адресовані рядки. Такого командного рядка оболонки бути не повинно
запам'ятовується як поточний шлях. Це використання команди запису with '!' не буде
розглядається як ``останнє w команда, яка записала весь буфер'', як описано раніше;
таким чином, саме це не перешкоджає попередженню користувача, якщо буде зроблена спроба
знищити буфер редактора через e or q команди.

Лінія Номер Command
конспект:
($)=

Номер рядка адресованого рядка має бути записаний до стандартного виведення наступним чином
формат:

"%d\n", <лінія номер>

Ця команда не змінює поточний номер рядка.

Склад Бігти Command
конспект:
!команда

Залишок рядка після '!' має бути надіслано командному інтерпретатору
інтерпретується як командний рядок оболонки. У тексті командного рядка оболонки
неекранований символ '%' має бути замінено запам'ятованим ім'ям шляху; якщо '!' з'являється
як перший символ команди, його слід замінити текстом попереднього
Команда оболонки, що виконується через '!'. Таким чином, "!!" повторю попереднє!команда. Якщо хто-небудь
заміни '%' or '!' виконуються, змінений рядок має бути записаний до
стандартний вихід раніше команда виконується. The ! команда повинна написати:

"!\n"

до стандартного виведення після завершення, якщо не −s вказана опція. Поточний рядок
номер залишається незмінним.

Null Command
конспект:
(.+1)

Одна лише адреса в рядку спричиняє запис адресованого рядка. А на самоті
має бути еквівалентним "+1p". Поточний номер рядка встановлюється на адресу
написаний рядок.

EXIT СТАТУС


Повинні бути повернуті такі вихідні значення:

0 Успішне завершення без помилок у файлі чи команді.

>0 Сталася помилка.

НАСЛІДКИ OF ПОМИЛКИ


Якщо виникла помилка в сценарії введення, або коли виявлено помилку, це a
наслідком даних (не) присутніх у файлі або через зовнішні умови, наприклад
помилка читання або запису:

* Якщо стандартним введенням є файл термінального пристрою, усі вхідні дані повинні бути очищені та новий
команда прочитати.

* Якщо стандартним введенням є звичайний файл, ed закінчується ненульовим виходом
Статус.

Команда після розділам він має інформативний.

ЗАСТОСУВАННЯ ВИКОРИСТАННЯ


Через надзвичайно стислий характер повідомлень про помилки за замовчуванням, розсудливий сценарій
письменник починає ed введення команд за допомогою an H команду, щоб у разі виникнення помилок на
принаймні деяка підказка щодо причини є доступною.

У попередніх версіях цього стандарту застаріла - був описаний варіант. Це ні
довше вказано. Програми повинні використовувати −s варіант. Використання - як файл операнд зараз
дає невизначені результати. Це дозволяє реалізації продовжувати підтримувати
колишня необхідна поведінка.

ПРИКЛАДИ


Ні.

ОБГОВОРЕННЯ


Початковий опис цієї утиліти було адаптовано з SVID. Він містить деякі
функції, яких немає у версії 7 або системах на основі BSD. Деякі відмінності між
POSIX і BSD ed утиліти включають, але не обмежуються ними:

* BSD - параметр не пригнічує '!' підказка після a ! команда

* BSD не підтримує спеціальні значення '%' та '!' символи всередині a !
команда

* BSD не підтримує адреси ';' та ','.

* BSD дозволяє використовувати пари команд/суфіксів pp, ll, і так далі, які не вказані в цьому
том POSIX.1‐2008.

* BSD не підтримує '!' характерна частина e, rабо w команди.

* Не вдалося g Команда в BSD встановлює номер рядка на останній пошуковий рядок, якщо є
немає збігів.

* BSD не встановлює за замовчуванням команда список до p команда

* BSD не підтримує G, h, H, nабо V команди.

* У BSD, якщо немає вставленого тексту, команда вставки змінює поточний рядок на
посилання на рядок −1; тобто рядок перед зазначеним рядком.

* На BSD, приєднатися команда лише з однією адресою змінює поточний рядок на цю
адреса

* BSD не підтримує P команда; більше того, в BSD це синонім p
команда

* BSD не підтримує анулювати з команд j, m, r, sабо t.

* Версія 7 ed команда W, і BSD ed Команди W, wq та z відсутні в
цей том POSIX.1‐2008.

Команда −s була додана опція, щоб дозволити функціональність видаленого - варіант певним чином
сумісний з Інструкціями щодо синтаксису утиліт.

У ранніх пропозиціях існувало обмеження {ED_FILE_MAX}, яке описало історичні дані
обмеження деяких ed утиліти для обробки великих файлів; деякі з них мали
проблеми з файлами розміром понад 100000 XNUMX байт. Саме це обмеження спонукало багато чого
бажання включити а розкол команду в цьому томі POSIX.1‐2008. Оскільки ця межа була
видалено, цей том POSIX.1-2008 вимагає, щоб реалізації документували розмір файлу
обмеження, встановлені ed в документі відповідності. Ліміт {ED_LINE_MAX} також був
видалено; тому глобальне обмеження {LINE_MAX} використовується для вхідних і вихідних рядків.

Спосіб, яким l Команда записує недруковані символи була змінена, щоб уникнути
історичний метод зворотного простору. На терміналах відеодисплея є надстригання
неоднозначно, тому що більшість терміналів просто замінюють перерізані символи, що робить l формат
не є корисним за призначенням для однозначного розуміння змісту
лінія. Історичний -втечі також були неоднозначними. (Струнок "a\0011" може
представляють рядок, що містить ці шість символів, або рядок, що містить три символи
'A', байт із двійковим значенням 1 та 1.) У потрібному тут форматі
у рядку записується як "\\" щоб вихід був дійсно однозначним. The
Метод розмітки кінців ліній був прийнятий з ст ex редактор і необхідний для будь-якого
рядок, що закінчується на персонажів; в '$' розміщується на всіх рядках так, що дійсне '$' at
кінець рядка не можна неправильно інтерпретувати.

Попередні версії цього стандарту допускали реалізації з байтами, відмінними від восьми
біти, але це було змінено в цій версії.

Опис того, як пишеться NUL, було видалено. Символ NUL не може бути в тексті
файлів, і цей том POSIX.1‐2008 не повинен диктувати поведінку у випадку
невизначений, помилковий введення.

На відміну від деяких інших утиліт для редагування, назви файлів прийняті E, e, R та r
команди не є шаблонами.

Ранні пропозиції зазначали, що −стр Опція працювала лише тоді, коли було пов'язано стандартне введення
з термінальним пристроєм. Це було змінено, щоб відповідати історичним реалізаціям,
тим самим дозволяючи додаткам вставлятися між користувачем і користувачем ed утиліта

Форма команди заміни, яка використовує n суфікс був обмежений у деяких історичних
документації (де це було неправильно описано як "зворотні посилання"). Ця межа
було пропущено, оскільки немає причин, чому редактор обробляє рядки {LINE_MAX}
довжина повинна мати це обмеження. Команда s/x/X/2047 має бути в змозі замінити
2047-ма поява 'х' на лінії.

Використання команд друку з суфіксами друку (наприклад pn, lpі так далі) було зроблено
не вказано, оскільки системи на основі BSD дозволяють це, тоді як System V — ні.

Деякі системи на базі BSD завершують роботу відразу після отримання кінця файлу, якщо всі рядки в
файл видалено. Оскільки цей том POSIX.1‐2008 відноситься до q командувати в
у цьому випадку така поведінка не допускається.

Деякі історичні реалізації повертали статус виходу нульовим, навіть якщо були помилки команди
відбулося; це не дозволяється цим томом POSIX.1‐2008.

Деякі історичні реалізації містили помилку, яка дозволяла одиночний бути
введено в режим введення як . Це не дозволено ed
тому що немає опису екранування будь-якого з символів у режимі введення;
символи вводяться в буфер точно так, як було введено. Типовий метод
введення одиночного було передувати іншим символом, а потім використовувати
Команда substitute для видалення цього символу.

Це складно в деяких режимах деяких версій історичного терміналу операційної системи
драйвери, щоб розрізняти стан кінця файлу та відключення терміналу.
POSIX.1-2008 не вимагає реалізацій, щоб розрізняти дві ситуації,
що дозволяє історичні реалізації ed утиліта на історичних платформах для
відповідати. Реалізаціям рекомендується розрізняти ці два, якщо можливо, і
вжити відповідних заходів щодо відключення терміналу.

Історично, ed прийняв нульову адресу для a та r команди, щоб вставити текст
на початку буфера редагування. Коли буфер був порожнім, команда .= повернув нуль.
POSIX.1‐2008 вимагає відповідності історичній практиці.

Для узгодженості з a та r команди та кращу функціональність користувача, i та c
команди також повинні приймати адресу 0, у цьому випадку 0i розглядається як 1i і так само
для c команда

Усі наведені нижче адреси є дійсними:

+++ Три рядки після поточного рядка.

/модель/− Один рядок перед наступним входженням шаблону.

−2 Два рядки перед поточним рядком.

3 −−−− 2 Рядок перший (зверніть увагу на проміжну негативну адресу).

1 2 3 Рядок шостий.

Командам, які приймають адреси, можна надати будь-яку кількість адрес; наприклад,
"1,2,3,4,5p" друкує рядки 4 і 5, тому що дві - це найбільша допустима кількість адрес
прийнято друк команда. Це в поєднанні з роздільник,
дозволяє користувачам створювати команди на основі впорядкованих шаблонів у файлі. Наприклад,
команда "3;/foo/;+2p" відобразить перший рядок після рядка 3, який містить шаблон
Foo, плюс наступні два рядки. Зверніть увагу, що адреса "3;" необхідно оцінити раніше
відкидається, оскільки пошук походження для "/foo/" від цього залежить команда.

Історично, ed заборонені ланцюжки адрес, як обговорювалося вище, що складаються виключно з
або сепаратори; наприклад, ",,," or ";;;" вважалися помилкою.
Для узгодженості специфікації адреси це обмеження знято. Наступна таблиця
перелічує деякі з можливих форм адреси:

┌────────┬───────┬────────┬────────────┬─────────── ─────────────┐
АдресаАдрес 1Адрес 2Статускоментар
├────────┼───────┼────────┼────────────┼─────────── ─────────────┤
│7, │ 7 │ 7 │ Історичний │ │
│7,5, │ 5 │ 5 │ Історичний │ │
│7,5,9 │ 5 │ 9 │ Історичний │ │
│7,9 │ 7 │ 9 │ Історичний │ │
│7,+ │ 7 │ 8 │ Історичний │ │
│, │ 1 │ $ │ Історичний │ │
│,7 │ 1 │ 7 │ Розширення │ │
│,, │ $ │ $ │ Розширення │ │
│,; │ $ │ $ │ Розширення │ │
│7; │ 7 │ 7 │ Історичний │ │
│7;5; │ 5 │ 5 │ Історичний │ │
│7;5;9 │ 5 │ 9 │ Історичний │ │
│7;5,9 │ 5 │ 9 │ Історичний │ │
│7;$;4 │ $ │ 4 │ Історичний │ Допустимий, але помилковий. │
│7;9 │ 7 │ 9 │ Історичний │ │
│7;+ │ 7 │ 8 │ Історичний │ │
│; │ . │ $ │ Історичний │ │
│;7 │ . │ 7 │ Розширення │ │
│;; │ $ │ $ │ Розширення │ │
│;, │ $ │ $ │ Розширення │ │
└────────┴───────┴───────┴────────────┴─────────── ─────────────┘
Історично, ed прийняв '^' символ як адреса, у цьому випадку він був ідентичним
до характер. POSIX.1-2008 не вимагає і не забороняє цю поведінку.

Майбутнє НАПРЯМКИ


Ні.

Використовуйте edposix онлайн за допомогою служб onworks.net



Найновіші онлайн-програми для Linux і Windows