Попробуйте:
awk '{x=x $0 ORS}; END{printf "%s", $0 ORS x}'
Определить переменную с помощью нашего ввода:
$ input="line 1
> line 2
> line 3"
Запускаем нашу команду:
$ echo "$input" | awk '{x=x $0 ORS}; END{printf "%s", $0 ORS x}'
line 3
line 1
line 2
line 3
В качестве альтернативы, конечно, мы могли бы использовать здесь -doc:
$ cat <<EOS | awk '{x=x $0 ORS}; END{printf "%s", $0 ORS x}'
line 1
line 2
line 3
EOS
line 3
line 1
line 2
line 3
x=x $0 ORS
Это добавляет каждую строку ввода к переменной x
.
В awk ORS
— это разделитель выходных записей . По умолчанию это символ новой строки.
END{printf "%s", $0 ORS x}
После того, как мы прочитали весь файл, выводится последняя строка $0
, за которой следует содержимое всего файла x
.
Так как это считывает весь ввод в память, это не подходит для больших (, например. гигабайт )входных данных.