分离偶数和奇数

分离偶数和奇数

我有一个包含前 100 个数字的文件,我只需要将偶数复制到另一个文件中。我该如何使用 来做到这一点grep

答案1

假设数字以换行符分隔,如下所示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

答案2

使用正则表达式grep

grep "^[0-9]*[13579]$" FILE > oddsfile.txt

grep "^[0-9]*[02468]$" FILE > evensfile.txt

这会将文件导入 grep,后者与正则表达式匹配并将其写入文件

答案3

如果数字以空格分隔(全部在一行),请测试以下操作:

grep -E '(^| )1?[0-9]?[02468]( |$)' file

知道了!

添加-o仅匹配的开关并重定向到新文件:

grep -Eo '(^| )1?[0-9]?[02468]( |$)' file > newfile

如果数字以换行符分隔:

grep -E '^1?[0-9]?[02468]$' file > newfile

笔记:

  • -E使用扩展正则表达式
  • (this|that)匹配thisthat
  • ^行首
  • $行结束
  • ?零个或一个前一个字符

相关内容