Чтобы сделать это Ваш путь, который должен был бы быть чем-то как:
POSIXLY_CORRECT=1 awk '
{
n = ""; r = $0
while (match(r, /[[:alpha:]]{3} [[:alpha:]]{3} +[0-9]+ ([0-9]{2}:){2}[0-9]{2} [0-9]{4}/)) {
c = "date -d\"" substr(r,RSTART,RLENGTH) "\" +%s"
c | getline b
close(c)
n = n substr(r,1,RSTART-1) b
r = substr(r,RSTART+RLENGTH)
}
print n r
}'
Вот некоторые:
awk -F": " '/:/{print $2": "$1}' file
sed 's/\(.*\): *\(.*\)/\2: \1/' file
perl -pne 's/(.+?):\s*(.*)/$2: $1/' file
paste <(cut -f 2 -d ' ' file) <(cut -f 1 -d ' ' file | sed 's/://')
while read a b; do echo "$b: $a"; done < file | sed 's/: *$//'
Существует также
perl -ple '$_=join ": ",reverse split /:\s*/' your_file
и
perl -aF':\s*' -ple '$_=join ": ",reverse @F' your_file
-aF':\s'
, потому что “Вы не можете использовать литеральный пробел в шаблоне”. – perlrun.
– manatwork
19.11.2013, 18:51