Вот более простой способ сделать это:
awk '{print $3," "$2," "$1}' file
Он просто использует awk
для печати столбцов 3, 2 и 1 с двумя пробелами между 3-м и 2-м столбцами и четырьмя пробелами между 2-м и 1-м столбцами.
Выход:
#### january 400
#### april 304
#### may 151
#### june 126
#### august 115
#### december 98
Если вы хотите отредактировать файл на месте, используйте эту команду:
awk -i inplace '{print $3," "$2," "$1}' file
Вы пытаетесь использовать экранирование приглашения вне контекста, в котором обычно оцениваются экранирование приглашения. поэтому переменная содержит строку %3~
, вы пытаетесь разделить строку %3~
, что приводит к %3~
, и я предполагаю, что позже она будет присвоена PS1
/ PROMPT
, которая затем расширяется zsh %3~
.
Если вы хотите выполнить раскрытие параметров и обработать строку %3~
как побег подсказки, вы можете использовать флаг раскрытия параметра %
следующим образом${(%)a}