Принятый ответ ничего не сделал для меня, однако я не перезагрузил свой компьютер, чтобы попытаться устранить проблему.
Что для меня работало:
killall -9 kdevelop
Убив все экземпляры kdevelop, я могу запустить его снова и выбрать сеанс.
с awk это гораздо более простой синтаксис
awk -F, '{print $4","$5","$6","$1","$2","$3}' file.txt
Золотое правило регулярных выражений «меньше». Вы всегда должны пытаться написать простейшее регулярное выражение, соответствующее вашим данным. Это не только упрощает чтение и понимание, но и гораздо более надежное и не прерывается с небольшими изменениями в формате. Итак, в вашем случае вы можете просто сделать:
$ sed -r 's/(.*), ([^,]+,[^,]+,[^,]*$)/\2\1/' file
Friday, Mar 13,2015 16:59:42blah, blah, blah,
Friday, Mar 13,2015 16:51:11yadi, yadi, yada,
Это соответствует всем значениям от начала строки до запятой и пробелом ((.*),) и, поскольку шаблон окружен круглыми скобками, сохраняет его как \1. Теперь, поскольку вторая захваченная группа (второй шаблон в круглых скобках) подходит к концу строки (это означает $), мы знаем, что мы соответствуем правой части в первом.
Второй ищет растягивание одного или нескольких символов без запятой ([^,]+), запятой, другим набором не запятых, другой запятой, а затем как можно большим количеством символов не запятой до тех пор, пока конец линии. Таким образом, мы можем корректно идентифицировать последние поля как дату. [F8] - это оператор подстановки, который здесь просто переключает порядок 1-го и 2-го захваченных паттернов.
Вы также можете сделать то же самое в awk. Предположительно, текст до даты является переменным, поэтому мы не можем принимать одинаковое количество полей для каждой строки. Поэтому нам нужно будет считать поля назад от конца строки:
$ awk -F, '{
printf "%s,%s,%s, ", $(NF-2),$(NF-1),$NF;
for(i=1;i<NF-3;i++){printf "%s,", $i} print $(NF-3)
}' file
Friday, Mar 13,2015 16:59:42, blah, blah, blah
Friday, Mar 13,2015 16:51:11, yadi, yadi, yada
Или в Perl:
$ perl -lpe 's/(.*), ([^,]+,[^,]+,[^,]*$)/\2, \1/' file
Friday, Mar 13,2015 16:59:42, blah, blah, blah
Friday, Mar 13,2015 16:51:11, yadi, yadi, yada
$ perl -F, -lane 'print join ",",@F[$#F-2,$#F-1,$#F,0..$#F-3]' file
Friday, Mar 13,2015 16:59:42,blah, blah, blah
Friday, Mar 13,2015 16:51:11,yadi, yadi, yada