yum install gcc gcc-c++ make
Это работает эквивалентное из build-essential
в CentOS.
Используя sed
изменить файл на месте:
sed -i '/^\(report\|-t\(h\|o\)\)/!d' your_file
Это сообщает sed
удалить все строки, не соответствующие шаблону. Сам шаблон ^
(запустите строки), сопровождаемый также report
или -t
сопровождаемый также h
или o
.
Необходимо отметить, что это не фактическая оперативная модификация: sed
создает временную резервную копию и перезаписывает исходный файл с ним.
Если Вы хотите sed
для хранения резервной копии исходного файла (который мог бы быть хорошей идеей, если файл содержит критические данные) дайте -i
переключите расширение для создания файла резервной копии:
sed -i'.bak' -e '/^\(report\|-t\(h\|o\)\)/!d' your_file
изменит your_file
и создайте резервное копирование названного оригинала your_file.bak
.
Примечание стороны
Не неверно истолковывайте мои намерения или обижайтесь на это, но я заметил, что у Вас есть связанные вопросы многих подобных regex/text-processing. Я советую Вам начинать учиться sed
, awk
и grep
самостоятельно помочь ускорить Вашу производительность. Снова, не понимайте меня превратно, я слишком рад помочь (как большинство людей здесь); это просто, что я думаю, что Вы выдерживаете извлечь выгоду чрезвычайно из взятия этих инструментов для Вашего ежедневного использования.
Только, чтобы доказать, как услужливые люди здесь, рассмотрите предложение @slm в комментариях ниже и не стесняйтесь отбрасывать этой чат-комнатой любое время для вопросов.
Можно использовать простой grep для этого:
$ grep -e '^report\|^-th\|^-to' filename
-th
/-to
в -t[ho]
.
– Kevin
07.11.2013, 00:47
-th
/-to
в -t[ho]
.
– Kevin
07.11.2013, 00:47
-th
/-to
в -t[ho]
.
– Kevin
07.11.2013, 00:46
Корреспондент сделал две точки:
Решения, в это время, обращаются к первой точке и таким образом также второму. Но предположите, файл больше и похож:
report aaaaaaaa
- ..
-th bbbbbbbbb
-to ccccccccc
anything else
.. --.
-tp ddd
-tq eee
- -----
Не был бы, обращаясь к второй точке OP сделать необходимое?
sed -r -i.bak '/^[ |.|-]*$/d' input-file
делает задание удаления, по-видимому, нежелательные строки, содержащие просто, располагают с интервалами, отмечают точкой и подчеркивают штриховой линией и сохраняющий остальных, независимо от того, что это.
Я думал бы, что риск любого подхода состоит в том, что природа файла правильно не определяется.
Использование Perl:
perl -ne 'print if /^report|^-t[ho]/' filename > newfile
или, для редактирования на месте (как sed
, perl
также сделает временное резервное копирование, таким образом, это не верно на месте редактирование):
perl -i.bak -ne 'print if /^report|^-t[ho]/' filename
Это сделает копию исходного файла названной filename.bak
и перезапишите свой исходный файл с отредактированной версией.