如何使用awk列出特定行?

时间:2016-10-19 18:53:04

标签: unix awk

我有一个文件,其排序如下:

2 Good
2 Hello
3 Goodbye
3 Begin
3 Yes
3 No

我想在文件中搜索最高值并显示该行的哪一行?

3 Goodbye
3 begin
3 Yes
3 No

我该怎么做?

5 个答案:

答案 0 :(得分:2)

awk救援!

$ awk 'FNR==NR{if(max<$1) max=$1; next} $1==max' file{,}

3 Goodbye
3 Begin
3 Yes
3 No

双通,找到最大值并过滤掉其余部分。

答案 1 :(得分:0)

首先将文件中的最高值转换为变量。考虑到文件已经排序,请拾取文件中的最后一行。然后使用awk解析数字。

highest=`tail -1 file.list|awk '{print $1}'`

然后使用该值grep文件。

grep "^${highest} " file.list

答案 2 :(得分:0)

这应该可以胜任。我只在问题中使用awk

awk 'BEGIN {v=0} {l = l "\n" $0} {if ($1>v) {l = $0; v = $1}} END {print l}' file.txt

变量v被初始化(在解析文件之前)为0.然后读取每一行并保存在内存中;如果第一个字段($1)大于v,则更新v并清空l中的内容。最后,只需打印l

的内容

答案 3 :(得分:0)

这比你想象的容易。

awk '/^3/' file

3 Goodbye
3 Begin
3 Yes
3 No

答案 4 :(得分:0)

cat file.txt | sort -r | awk'{if($ 1&gt; = prev){print $ 0;一个先前= $ 1}}“

3 Yes
3 No
3 Goodbye
3 Begin

假设 file.txt 包含

2 Good
2 Hello
3 Goodbye
3 Begin
3 Yes
3 No