在UNIX环境中,我有一个包含以下详细信息的file.txt:
Data recording started:
0001100 Matched at 412090
0001101 Mismatched at 414798
0001102 Matched at 420007
0001103 Mismatched at 420015
Job completed
如何通过搜索“匹配”(第2行)字以及第一个“不匹配”(第3行)来获取第一个匹配值 找出它们之间的区别并存储为变量“dif” 结果是匹配减去不匹配,因此它无法通过指定行号找到数据,即查找第3行最后一个整数减去第2行最后一个整数,因为不匹配可能首先出现如下:
Data recording started:
0001100 Mismatched at 412090
0001101 Matched at 414798
0001102 Mismatched at 420007
0001103 Matched at 420015
Job completed
答案 0 :(得分:0)
一种方式:
echo $((
$(grep Matched input | head -1 | sed 's/.*at //')
- $(grep Mismatched input | head -1 | sed 's/.*at //')
))
或仅使用sed:
echo $((
$(sed -n 's/.*Matched.*at //p' input | head -1)
- $(sed -n 's/.*Mismatched.*at //p' input | head -1)
))
<强>输出强>
-2708
答案 1 :(得分:0)
我们可以使用grep -m 1来开头。
dif=$((
$(grep -m 1 'Matched' a.txt | sed 's/.*at \([0-9]*\).*/\1/')
- $(grep -m 1 'Mismatched' a.txt | sed 's/.*at \([0-9]*\).*/\1/')
))
echo $dif