Существует флаг для sed's GNU s///
команда, которая делает это:
sed 's/;/;NEW;/2g' <
выводы
india;austria;NEW;japan;NEW;chile
china;US;NEW;nigeria;NEW;mexico;NEW;russia
См. https://www.gnu.org/software/sed/manual/sed.html#The-_ 0022s_0022-команда
s
команда может сопровождаться нулем или большим количеством следующих флагов:
g
Примените замену ко всем соответствиям к regexp, не просто первое.
число
Только замените соответствие нумерующий regexp.Примечание: posix стандарт не указывает то, что должно произойти, когда Вы смешиваетесь
g
и модификаторы числа, и в настоящее время существуют не широко согласованы значение через sed реализации. Для GNU sed, взаимодействие определяется, чтобы быть: проигнорируйте соответствия перед нумерующего, и затем соответствуйте и замените все соответствия от нумерующий на....
(шахта акцента)
tl;dr Коды выхода специфичны для конкретного случая применения.
Существуют некоторые свободные конвенции. false
и все, что успешно префиксовано с !
(как ! true
) в POSIX-оболочках возвращает код выхода 1, но разработчик может использовать любой код выхода между 0 и 255 для чего угодно. В конце концов, вы должны посмотреть его документацию (в лучшем случае) или код (в худшем случае), чтобы понять, что он означает. Для программ со страницами man
коды выхода часто перечисляются в разделе с именем EXIT STATUS
(инструменты GNU, такие как find
).
Некоторые популярные значения перечислены в /usr/include/sysexits.h
- я стараюсь использовать их по возможности. Как указывает @AnsgarEsztermann, это не ссылка на Bash или даже не ссылка на приложение, за исключением тех, кто решил их использовать (разработчики на C/C++ в первую очередь в соответствии с ABS).
Отключите команды «shutdown/reboot/poweroff/halt/hostname», подобные командам на критически важных серверах
chmod 0 /sbin/shutdown
, затем, если необходимо использовать их, вернитесь к chmod 0755
.
tl; dr Коды выхода зависят от приложения.
Есть некоторые свободные условности. false
и все, что успешно выполнено с префиксом !
(например, ! true
) в оболочках POSIX возвращают код выхода 1, но разработчик может использовать любой код выхода от 0 до 255 для любых желаний. В конечном счете вы должны посмотреть на его документацию (в лучшем случае) или код (в худшем случае), чтобы знать, что это значит. Для программ с man
коды выхода страниц часто перечисляются в разделе EXIT STATUS
(инструменты GNU, такие как найти
).
Некоторые популярные значения перечислены в /usr/include/sysexits.h
- стараюсь использовать их по возможности. Как указывает @ AnsgarEsztermann , это не ссылка на Bash или даже ссылка на приложение, за исключением тех, кто выбрал его использование (разработчики C/C + + в основном согласно ABS ).
Существует несколько кодов выхода с зарезервированными специальными значениями :
Exit Code Number Meaning 1 Catchall for general errors 2 Misuse of shell builtins (according to Bash documentation) 126 Command invoked cannot execute 127 "command not found" 128+n Fatal error signal "n" 130 Script terminated by Ctrl-C 255* Exit status out of range
Все, что ниже 125, является честной игрой для разработчиков, и действительно может быть проговорено, как l0b0 отмечает в своем ответе , прочитав man
страницу для приложения, или исходный код, чтобы определить, что означает код (