awk - 用awk,egrep查找后如何比较数字
问题描述
我有一些 file.txt,其中有很多信息。文件中的输入如下所示:
<ss>283838<ss>
.
.
<ss>111 from 4444<ss>
.
<ss>255<ss>
这些数字可以有任意位数。
- 我需要找到并比较这两个数字
- 如果它们相等,则打印文件的名称,如果不相等,则打印它们相等,则反向含义。文件中只有一个字符串的数字带有“from”字样, 我试图这样做
Awk '/[0-9]+ from./ {print $0} file.txt | egrep -o '[0-9]+'
使用此命令,我得到了这两个数字,但我现在堆叠起来,不知道如何比较它们
解决方案
使用您显示的示例,您能否尝试以下操作。简单的解释是:通过正则表达式获取各自的数字值,然后比较它们以检查 3 种情况,它们是否大于、小于或等于彼此,将在某个时候添加详细说明。
awk '
match($0,/<[a-zA-Z]+[0-9]+/){
val1=substr($0,RSTART,RLENGTH)
gsub(/[^0-9]*/,"",val1)
match($0,/[0-9]+[a-zA-Z]+>/)
val2=substr($0,RSTART,RLENGTH)
gsub(/[^0-9]*/,"",val2)
if(val1>val2){
print "val1("val1 ")is Greater than val2("val2")"
}
if(val2>val1){
print "val2("val2 ")is Greater than val1("val1")"
}
if(val1==val2){
print "val1("val1 ")is equals to val2("val2")"
}
}' Input_file
对于您当前显示的示例输出将如下所示:
val2(333)is Greater than val1(222)
推荐阅读
- bash - 使用 grep 中的数字进行算术运算
- php - 我如何才能将此重定向到另一个(外部)网站
- docker - 在 Docker 映像中包装 Playwright 时出错
- javascript - 如何读取 response.data.length 的值
- c++ - 如果我打开一个已经在 C++ 中打开的文件会发生什么
- security - 错误:Windows 10 上的 Snort 配置验证失败
- flutter - 内存不足..flutter中的dum堆栈跟踪结束
- python - python random.choices 有偏见吗?
- python-3.x - 在没有 for 循环的情况下切片数组
- css - 有没有办法在 React Native App 中的某个点周围创建弯曲视图(或类似视图)?