我正在阅读众所周知的书“The C programming Language,2nd edition”,还有一个我坚持的练习。我无法弄清楚究竟需要做什么,所以我希望有人向我解释。
练习5-17:
输入程序对命令行的期望是什么; “独立选项”是什么意思?
答案 0 :(得分:2)
它指的是指定每行中的子字段进行排序的能力。例如:
sort -f1:4a -f20:28d somefile.txt
将从字符位置1开始对字段进行排序,并将其扩展到位置4,并在该排序中从20位开始并延伸到28位的字段。
当然,还有很多其他方法可以指定字段,排序顺序等。设计命令行开关是练习的重点之一,恕我直言。
答案 1 :(得分:2)
研究POSIX sort
实用程序,忽略遗留选项。或研究GNU sort
计划;它有比POSIX sort
更多的选项。
你需要根据Neil Butterworth在他的答案和变宽字段中的建议来决定固定宽度字段。您需要决定将可变宽度字段分隔的字符。您需要决定支持每个字段的排序模式(字符串,大小写折叠的字符串,电话簿字符串,整数,浮点,日期等)以及排序方向(正向/反向或上升/下降)。
“独立选项”意味着您可以为不同的字段设置不同的排序条件。也就是说,您可以安排字段1按升序排序,字段3按降序排序,字段9按升序排序。
请注意,排序时,主要标准是指定的第一个关键字段。比较两行时,如果两行中的第一个键字段之间存在差异,则永远不会考虑后续的键字段。当第一个关键字段中的两行相同时,则第二个关键字段的标准确定相对顺序;然后,如果第二个关键字段相同,则查询第三个关键字段,依此类推。如果没有指定更多的关键字段,则通常的默认排序标准是“按升序字符串顺序输入的整行”。稳定排序保留原始数据中两行的相对顺序,使用关键字段条件(而不是使用默认的整行比较)进行比较时相同。