我需要以下输入和输出。
输入:
insert xxx to table xx.xxx.
1
insert yyy to table yy.yyy
10000
输出:
insert yyy to table yy.yyy
10000
我想在值> = 10000之前打印一行。
尝试过没有问题:
awk '($1>10000) {print$1)' < log2 > log3 | awk '/[0-9]$/ {print $1)' < log
答案 0 :(得分:0)
就像在问题中所说的那样,你需要获得前一行和模式(你的例子为'10000')对吗?
我认为最简单的方法是使用grep:
grep -B 1 '^([1-9]\d{4,})$' file
或者如果要将其打印到输出文件:
grep -B 1 '^([1-9]\d{4,})$' file > outputFile
它获取的值以1开头,之后有4位或更多位数。 ^和$保证该行只包含其中的数值(^是行开头,$是行结束)。
这对于您建议的输入将输出:
insert yyy to table yy.yyy
10000
答案 1 :(得分:0)
您可以使用此代码:
awk '{if (($1+0==$1) && $1 >= 10000) {print a; print}; a=$0}' < input
在这里,($1+0==$1)
确保$1
是一个数字,$1 >= 10000
检查它是否不小于10000.如果满足这两个条件,它会打印当前和最后一个行,使用a=$0
保存。