Extend the pure-shell parsing of command-list.txt by using having command_list() take an argument indicating whether we're interested in the "$cmd" part of the line, or just the "$rest". That takes care of the "cut -d", and printf's auto-repeat feature can replace the "tr". We don't need the "grep -v" either, as we're not emitting any empty lines here (the command-list.txt doesn't have any). This doesn't make things any faster or slower in my tests, but as with the preceding commit let's do it just to get rid of command invocations, it'll probably help on e.g. Windows. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> --- generate-cmdlist.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/generate-cmdlist.sh b/generate-cmdlist.sh index 2b184bbc65f..394443c66df 100755 --- a/generate-cmdlist.sh +++ b/generate-cmdlist.sh @@ -17,7 +17,12 @@ command_list () { *":$cmd:"*) ;; *) - echo "$cmd $rest" + if test -n "$1" + then + printf "%s\n" $rest + else + echo "$cmd $rest" + fi ;; esac esac @@ -25,10 +30,7 @@ command_list () { } category_list () { - command_list <"$1" | - cut -d' ' -f2- | - tr ' ' '\012' | - grep -v '^$' | + command_list --no-cat <"$1" | LC_ALL=C sort -u } -- 2.33.1.1505.g075a284c562