我有一个包含前 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)
匹配this
或that
^
行首$
行结束?
零个或一个前一个字符