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
我需要能够打印最大的记录值从txt文件使用bash_Bash_Unix - Fatal编程技术网

我需要能够打印最大的记录值从txt文件使用bash

我需要能够打印最大的记录值从txt文件使用bash,bash,unix,Bash,Unix,我是bash编程新手,遇到了一个障碍 我需要能够计算txt文件中的最大记录数,并将其存储到函数中的变量中 这是文本文件: 学生档案.txt 12345,fName lName,Grade,email 64674,fName lName,Grade,email 86345,fName lName,Grade,email 我需要能够获得最大的记录数($1或第一个字段),以便增加此唯一记录并向文件中添加更多记录。我似乎没办法弄明白这一点 首先,我按第一个字段降序排列文件,然后执行以下操作: lar

我是bash编程新手,遇到了一个障碍

我需要能够计算txt文件中的最大记录数,并将其存储到函数中的变量中

这是文本文件:
学生档案.txt

12345,fName lName,Grade,email
64674,fName lName,Grade,email
86345,fName lName,Grade,email 
我需要能够获得最大的记录数($1或第一个字段),以便增加此唯一记录并向文件中添加更多记录。我似乎没办法弄明白这一点

首先,我按第一个字段降序排列文件,然后执行以下操作:

largest_record=$(awk-F,'NR==1{print $1}' student_records.txt)
echo $largest_record
这使我在控制台上出现以下错误:

awk-F,NR==1{print $1}: command not found
有什么想法吗?还有,关于如何以最佳方式实现这一点,有什么建议吗


先谢谢你

您需要空格和引号

awk -F, 'NR==1{print $1}'
命令是
awk
,在它之后需要一个空格,以便bash正确解析命令行,否则它会认为整个事情就是命令的名称,这就是错误消息告诉您的

了解如何使用
man
命令,以便了解如何调用其他命令:

man awk
这将告诉您
-F
选项的功能:

-F fs选项将输入字段分隔符定义为正则表达式fs

因此,在您的例子中,字段分隔符是逗号
-F,

引号中的内容是您希望awk解释的内容,它表示将一行与模式匹配,
NR==1
,NR是特殊的,它是记录编号,因此您希望它与第一条记录匹配,接下来是您希望awk在该模式匹配时采取的操作,
{print$1}
,它表示打印第一个字段(逗号分隔)行的

实现这一点的更好方法是使用
awk
为您查找最大的记录,而不是首先对其进行排序,这为您提供了一个记录数线性的解决方案-您只需要最大值,无需对整个文件进行额外排序:

awk -F, 'BEGIN {max = 0} {if ($1>max) max=$1} END {print max}' student_records.txt

对于这个和其他
awk
“一行程序”看。

你需要空格和引号

awk -F, 'NR==1{print $1}'
命令是
awk
,在它之后需要一个空格,以便bash正确解析命令行,否则它会认为整个事情就是命令的名称,这就是错误消息告诉您的

了解如何使用
man
命令,以便了解如何调用其他命令:

man awk
这将告诉您
-F
选项的功能:

-F fs选项将输入字段分隔符定义为正则表达式fs

因此,在您的例子中,字段分隔符是逗号
-F,

引号中的内容是您希望awk解释的内容,它表示将一行与模式匹配,
NR==1
,NR是特殊的,它是记录编号,因此您希望它与第一条记录匹配,接下来是您希望awk在该模式匹配时采取的操作,
{print$1}
,它表示打印第一个字段(逗号分隔)行的

实现这一点的更好方法是使用
awk
为您查找最大的记录,而不是首先对其进行排序,这为您提供了一个记录数线性的解决方案-您只需要最大值,无需对整个文件进行额外排序:

awk -F, 'BEGIN {max = 0} {if ($1>max) max=$1} END {print max}' student_records.txt

对于这个和其他
awk
“一行程序”看。

你需要空格和引号

awk -F, 'NR==1{print $1}'
命令是
awk
,在它之后需要一个空格,以便bash正确解析命令行,否则它会认为整个事情就是命令的名称,这就是错误消息告诉您的

了解如何使用
man
命令,以便了解如何调用其他命令:

man awk
这将告诉您
-F
选项的功能:

-F fs选项将输入字段分隔符定义为正则表达式fs

因此,在您的例子中,字段分隔符是逗号
-F,

引号中的内容是您希望awk解释的内容,它表示将一行与模式匹配,
NR==1
,NR是特殊的,它是记录编号,因此您希望它与第一条记录匹配,接下来是您希望awk在该模式匹配时采取的操作,
{print$1}
,它表示打印第一个字段(逗号分隔)行的

实现这一点的更好方法是使用
awk
为您查找最大的记录,而不是首先对其进行排序,这为您提供了一个记录数线性的解决方案-您只需要最大值,无需对整个文件进行额外排序:

awk -F, 'BEGIN {max = 0} {if ($1>max) max=$1} END {print max}' student_records.txt

对于这个和其他
awk
“一行程序”看。

你需要空格和引号

awk -F, 'NR==1{print $1}'
命令是
awk
,在它之后需要一个空格,以便bash正确解析命令行,否则它会认为整个事情就是命令的名称,这就是错误消息告诉您的

了解如何使用
man
命令,以便了解如何调用其他命令:

man awk
这将告诉您
-F
选项的功能:

-F fs选项将输入字段分隔符定义为正则表达式fs

因此,在您的例子中,字段分隔符是逗号
-F,

引号中的内容是您希望awk解释的内容,它表示将一行与模式匹配,
NR==1
,NR是特殊的,它是记录编号,因此您希望它与第一条记录匹配,接下来是您希望awk在该模式匹配时采取的操作,
{print$1}
,它表示打印第一个字段(逗号分隔)行的

实现这一点的更好方法是使用
awk
为您查找最大的记录,而不是首先对其进行排序,这为您提供了一个记录数线性的解决方案-您只需要最大值,无需对整个文件进行额外排序:

awk -F, 'BEGIN {max = 0} {if ($1>max) max=$1} END {print max}' student_records.txt
对于此和其他
aw