From 0454d655bb2cd15e1bc6c3ce2a0398b35c7ec07c Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Sat, 11 Mar 2023 20:44:12 +0000 Subject: [PATCH] sort: Add an option to sort in reverse order Lines can now be sorted in reverse order by specifying the `-r` option. --- Userland/Utilities/sort.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Userland/Utilities/sort.cpp b/Userland/Utilities/sort.cpp index 02c28a4e55..987f101152 100644 --- a/Userland/Utilities/sort.cpp +++ b/Userland/Utilities/sort.cpp @@ -55,6 +55,7 @@ struct Options { size_t key_field { 0 }; bool unique { false }; bool numeric { false }; + bool reverse { false }; StringView separator { "\0", 1 }; Vector files; }; @@ -104,6 +105,7 @@ ErrorOr serenity_main([[maybe_unused]] Main::Arguments arguments) args_parser.add_option(options.unique, "Don't emit duplicate lines", "unique", 'u'); args_parser.add_option(options.numeric, "treat the key field as a number", "numeric", 'n'); args_parser.add_option(options.separator, "The separator to split fields by", "sep", 't', "char"); + args_parser.add_option(options.reverse, "Sort in reverse order", "reverse", 'r'); args_parser.add_positional_argument(options.files, "Files to sort", "file", Core::ArgsParser::Required::No); args_parser.parse(arguments); @@ -120,9 +122,15 @@ ErrorOr serenity_main([[maybe_unused]] Main::Arguments arguments) quick_sort(lines); - for (auto& line : lines) { - outln("{}", line.line); - } + auto print_lines = [](auto const& lines) { + for (auto& line : lines) + outln("{}", line.line); + }; + + if (options.reverse) + print_lines(lines.in_reverse()); + else + print_lines(lines); return 0; }