У меня есть файл с первыми 100 числами, и я должен взять только четные числа в другой файл. Как я могу сделать это с grep
?
Если числа разделены пробелом (все на одной строке), тестируют это:
grep -E '(^| )1?[0-9]?[02468]( |$)' file
Получил его!
Добавляют эти -o
переключатель для только для соответствия и перенаправления в новый файл:
grep -Eo '(^| )1?[0-9]?[02468]( |$)' file > newfile
, Если числа являются разделенной новой строкой:
grep -E '^1?[0-9]?[02468] Примечания:
-
-E
расширенные регулярные выражения использования -
(this|that)
соответствие this
или that
-
^
запускаются строки -
$
конец строки -
?
нуль или один из предшествующего символа
file > newfile
-E
расширенные регулярные выражения использования (this|that)
соответствие this
или that
^
запускаются строки $
конец строки ?
нуль или один из предшествующего символа Принятие чисел является разделенной новой строкой, с awk
:
awk '! ($0 % 2)' file.txt
Сохранить вывод в файле:
awk '! ($0 % 2) {print >"even.txt"}' file.txt
Пример:
% cat file.txt
1
2
3
4
% awk '! ($0 % 2)' file.txt
2
4
% awk '! ($0 % 2) {print >"even.txt"}' file.txt
% cat even.txt
2
4
Используйте regex с grep
grep "^[0-9]*[13579]$" FILE > oddsfile.txt
grep "^[0-9]*[02468]$" FILE > evensfile.txt
Это передает файл по каналу в grep, который соответствует к regex и пишет это в файл