我有一个文件,其排序如下:
2 Good
2 Hello
3 Goodbye
3 Begin
3 Yes
3 No
我想在文件中搜索最高值并显示该行的哪一行?
3 Goodbye
3 begin
3 Yes
3 No
我该怎么做?
答案 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