Очень короткий ответ: OSX сочетает в себе ядро Mach с набором инструментов и библиотек BSD Unix. Наследие Mach (через NeXTSTEP) приводит к использованию Mach-O в качестве исполняемого формата.
Смотрите этот ответ для более подробной информации: https://unix.stackexchange.com/a/713/24313
Вы можете использовать функцию губки
, которая сначала впитывает stdin
, а затем записывает его в файл, как:
sort < f | sponge f
Даунспульс Губка
Это то, что он хранит временную продукцию в памяти, который может быть проблематичным для больших файлов. В противном случае вы должны сначала написать его в файл, а затем перезаписать исходный файл.
Как однако, указывается другими ответами, в определенных модификациях в целом не хорошая идея, поскольку в середине процесса (например, губка
один), машина может сбиться и затем Вы можете потерять как оригинал, так и новый файл. Вы лучше сначала напишите его в другой файл, а затем используете атомное MV
(MOVE).
Это происходит, потому что ваша первая группа захвата включает в себя .
^\([^#]*\)\(#.*\)
| -------- -------- the comment
begin |
everything upto #
including spaces
Чтобы исправить его, вы хотите покинуть пробелы из группы захвата, например:
^\(.\{-}\)\s*\(#.*\)
| ------ -- ------ comment
begin | \____ any amount of whitespace
non-greedy match
, которые сделают вашу полную команду:
%s/^\(.\{-}\)\s*\(#.*\)/\2\r \1/gc