diff --git a/contrib/pacsysclean.sh.in b/contrib/pacsysclean.sh.in index 8f2eea3..b69b012 100644 --- a/contrib/pacsysclean.sh.in +++ b/contrib/pacsysclean.sh.in @@ -34,33 +34,29 @@ if [ -n "$1" ]; then esac fi -IFS=$'\n' -name="^Name.*: (.*)$" -size="^Installed Size.*: (.*) KiB$" - [[ $PACMAN_OPTS && $PACMAN_OPTS != -* ]] && PACMAN_OPTS="-$PACMAN_OPTS" -for line in $(LANG=C pacman -Qi $PACMAN_OPTS); do - if [[ $line =~ $name ]]; then - printf "%s\t" ${BASH_REMATCH[1]} - elif [[ $line =~ $size ]]; then - printf "%s\n" ${BASH_REMATCH[1]} - fi -done | sort -g -k2 | awk ' +LANG=C pacman -Qi $PACMAN_OPTS | awk ' +/^Name\s+:/ { + name = $NF +} +/^Installed Size\s+:/ { + printf("%d %s\n", $(NF - 1), name) +}' | sort -g | awk ' BEGIN { split("KiB MiB GiB TiB PiB EiB ZiB YiB", suffix) } function format_size(size) { count = 1 while (size + 0 > 1024) { - size /= 1024 - count++ + size /= 1024 + count++ } sizestr = sprintf("%.2f %s", size, suffix[count]) return sizestr } { - printf("%s\t%s\n", format_size($2), $1); + printf("%s\t%s\n", format_size($1), $2); }' # vim: set noet: