regex - 使用 grep 函数保留特定行
问题描述
我有一个大数据集,变量包括不同的格式
Subject Result
1 3
2 4
3 <4
4 <3
5 I need to go to school<>
6 I need to <> be there
7 2.3 need to be< there
8 <.3
9 .<9
10 ..<9
11 >3 need to go to school
12 <16.1
13 <5.0
我只想保留包含“<数字”或“数字”的行,而不是文本格式的行(例如,我想排除 >3 需要上学,我需要上学 <>)。问题是某些记录类似于 .<3、..<9、>9.、>:9。那么如何从数据集中删除 ".","..",":" ,然后使用 "< a number" 表示法保留行。如何使用“grep”功能?同样,我只想保留以下行
Subject Result
> 3 <4
> 4 <3
> 8 <.3
> 9 .<9
> 10 ..<9
> 12 <16.1
> 13 <5.0
解决方案
您可以简单地应用两个 grep,一个用于查找“<>”键,然后一个用于消除带有字符的字段:
grep "[><]" | grep -v "[A-Za-z]"
如果你想学究气,你也可以应用另一个 grep 来找到那些有数字的
grep "[><]" | grep -v "[A-Za-z]" | grep "[0-9]"
顺便说一句, “grep -v ”表示匹配并且不返回。