首页 > 解决方案 > 使用 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

标签: regexreplace

解决方案


您可以简单地应用两个 grep,一个用于查找“<>”键,然后一个用于消除带有字符的字段:

grep "[><]" | grep -v "[A-Za-z]"

如果你想学究气,你也可以应用另一个 grep 来找到那些有数字的

grep "[><]" | grep -v "[A-Za-z]" | grep "[0-9]"

顺便说一句, “grep -v ”表示匹配并且不返回。


推荐阅读