|€#øRí»
Try it online.
With less strict I/O rules it would be 3 bytes instead, with I/O being a 3x3 matrix of integers:
øRí
Try it online.
Explanation:
# e.g. input = "1 2 3\n4 5 6\n7 8 9"
| # Take all input-lines as a list of strings
# STACK: ["1 2 3","4 5 6","7 8 9"]
€# # Split each line by spaces
# STACK: [["1","2","3"],["4","5","6"],["7","8","9"]]
ø # Zip the matrix, swapping rows with columns
# STACK: [["1","4","7"],["2","5","8"],["3","6","9"]]
R # Reverse the order of rows in the matrix
# STACK: [["3","6","9"],["2","5","8"],["1","4","7"]]
í # Reverse each row of the matrix
# STACK: [["9","6","3"],["8","5","2"],["7","4","1"]]
» # Join each row by spaces, and then everything by newlines
# STACK: "9 6 3\n8 5 2\n7 4 1"
# (after which it is output implicitly)
Here some alternatives with different order of operations:
øíR
Ríø
íRø
íøí
RøR
[1 2 3; 3 4 5; 1 2 3]
an acceptable input format? \$\endgroup\$