Unix - 搜索值并在行前打印

时间:2015-02-16 16:52:46

标签: shell unix aix

我需要以下输入和输出。

输入:

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

2 个答案:

答案 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保存。