Bash 删除第4列中包含范围模式的行

Bash 删除第4列中包含范围模式的行,bash,scripting,sed,awk,Bash,Scripting,Sed,Awk,在文件中,第4列包含浮点数 dsfsd sdfsd sdfds 4.5 dfsdfsd 如果数字介于-0.1和0.1(或其他范围)之间,我想删除整行 sed或awk能帮我吗 谢谢awk: { if ($4 > 0.1 || $4 < -0.1) print $0 } {if($4>0.1 | |$4

在文件中,第4列包含浮点数

dsfsd sdfsd sdfds 4.5 dfsdfsd
如果数字介于-0.1和0.1(或其他范围)之间,我想删除整行

sed或awk能帮我吗

谢谢

awk:

{ if ($4 > 0.1 || $4 < -0.1) print $0 }
{if($4>0.1 | |$4<-0.1)打印$0}
我建议使用“模式{expression}”语法:

awk'($4<-0.1)| |($4>0.1){print}test.txt
或者,更简洁地说:

awk '($4 < -0.1) || ($4 > 0.1)' test.txt
awk'($4<-0.1)| |($4>0.1)'test.txt
因为{print}是默认操作。我假设您有一个包含数据的文件“test.txt”。

这种场景——基于条件的逐行过滤——实际上是awk的面包和黄油。这就是Kernighan等人开发语言时考虑的用例类型。“pattern{expression}”语法意味着,如果满足给定行的“pattern”,则对该行执行“{expression}”。
awk '($4 < -0.1) || ($4 > 0.1)' test.txt