我需要能够打印最大的记录值从txt文件使用bash
我是bash编程新手,遇到了一个障碍 我需要能够计算txt文件中的最大记录数,并将其存储到函数中的变量中 这是文本文件:我需要能够打印最大的记录值从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
学生档案.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