Вы можете сделать это с помощью одного вызова sed
, не нужно читать файл дважды:
sed '$!n
w even
d' infile > odd
или, если хотите, в одной строке:
sed -e '$!n' -e 'w even' -e d infile > odd
Обратите внимание, что это не даст ожидаемый результат, если файл содержит только одну строку (строка будет иметь вид w
, преобразованный в четный
вместо нечетный
в качестве первого n
isn не выполнено). Чтобы этого избежать, добавьте условие:
sed -e '$!n' -e '1!{w even' -e 'd}' infile > odd
Как это работает? Ну, он использует три команды sed
:
n
- если не в последней строке , выведите пространство шаблонов на stdout
(который перенаправляется в файл odd
), замените его следующей строкой (теперь она обрабатывает четную строку) и продолжите выполнение оставшихся команд
w
- добавить пространство шаблонов в файл even
d
- удалить текущее пространство шаблонов и перезапустить цикл - побочным эффектом этого является то, что sed
никогда не будет автоматически печатать пространство шаблонов, поскольку он никогда не достигает конца скрипта
Другими словами, n
выполняется только на нечетных строках, а w
и d
выполняются только на четных строках. sed
никогда не выполняет автопечать, если, как я уже сказал, ввод не состоит из одной строки.
Проблема была устранена с помощью Исправить обнаружение включаемых каталогов с компилятором gnu и локалью, отличной от США , а для поиска и использования зависимостей в meson следует использовать dependency()
.
Чтобы найти буст в целом, вы должны иметь это в своемmeson.build
:
project('myproj', 'cpp')
deps = [
dependency('boost')
]
executable('myproj', 'main.cpp', dependencies: deps)
или это, если вам нужны определенные части усиления:
project('myproj', 'cpp')
deps = [
dependency('boost', modules: ['system', 'filesystem'])
]
executable('myproj', 'main.cpp', dependencies: deps)
Если вы используете комбинацию cxx = meson.get_compiler('cpp')
и cxx.find_library('boost_system')
, вы не получите флаги компилятора и/или компоновщика. find_library()
является примитивной проверкой компилятора и тестирует только разделяемые библиотеки в /usr/lib
. Пользователь должен убедиться, что заголовки доступны с помощью has_header()
и вручную определить каталог включения с помощьюdeclare_dependency(include_directories: '/usr/local/include/xxx
)`.
dependency()
— лучший способ поиска вещей, и вы должны использовать find_library()
, только если проект не поддерживает pkg-config
или cmake
.