Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何使用awk列出特定行?_Unix_Awk - Fatal编程技术网

Unix 如何使用awk列出特定行?

Unix 如何使用awk列出特定行?,unix,awk,Unix,Awk,我有一个排序如下的文件: 2 Good 2 Hello 3 Goodbye 3 Begin 3 Yes 3 No 我想搜索文件中的最高值并显示行中的哪一个 3 Goodbye 3 begin 3 Yes 3 No 如何执行此操作?首先将文件中的最大值放入变量中。考虑到文件已排序,请拾取文件中的最后一行。然后使用awk解析出数字 highest=`tail -1 file.list|awk '{print $1}'` 然后使用该值对文件进行grep grep "^${highest} " f

我有一个排序如下的文件:

2 Good
2 Hello
3 Goodbye
3 Begin
3 Yes
3 No
我想搜索文件中的最高值并显示行中的哪一个

3 Goodbye
3 begin
3 Yes
3 No

如何执行此操作?

首先将文件中的最大值放入变量中。考虑到文件已排序,请拾取文件中的最后一行。然后使用awk解析出数字

highest=`tail -1 file.list|awk '{print $1}'`
然后使用该值对文件进行grep

grep "^${highest} " file.list

这应该可以完成任务。我仅使用问题中要求的
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

的内容,这比您想象的要简单

awk '/^3/' file

3 Goodbye
3 Begin
3 Yes
3 No

awk
救援

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

3 Goodbye
3 Begin
3 Yes
3 No

$awk'FNR==NR{if(maxcat file.txt | sort-r | awk'{if($1>=prev){print$0;prev=$1}'

3 Yes
3 No
3 Goodbye
3 Begin
假设file.txt包含

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

您希望有多少行?(100K与1K不同..)必须在单个命令中完成吗?或者可以将其包装在脚本中?但这将只打印第一行“3再见”@nabeel Right.Updated.
v=0
不是显式需要的,它是默认值。非常感谢,这正是我需要的!除非您有稳定的排序,否则这可能会更改元素的顺序。。。