Перевернуть текст

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Grih65kop
Сообщения: 145

Перевернуть текст

Сообщение Grih65kop »

Есть текст:

123:qwer@dfdf.ru
www:sd@wdwd.com
54sdsd5:sdsdsdsd

Из него надо получить следующие:
qwer@dfdf.ru:123
sd@wdwd.com:www
sdsdsdsd:54sdsd5

Т.е. перевернуть. Посоветуйте рациональный вариант.

Что бы не создавать ещё одну тему.
Часто встречаю следующие "на чистом баше" или же "код регистро-зависимым", как это понять
Спасибо.
Спасибо сказали:
Аватара пользователя
Фантом
Сообщения: 464
ОС: openSUSE

Re: Перевернуть текст

Сообщение Фантом »

Grih65kop писал(а):
31.01.2010 20:15
Т.е. перевернуть. Посоветуйте рациональный вариант.


В консоли rev "название исходного файла" > "название конечного файла" (без кавычек, естественно)

(А, черт, не заметил, что надо не просто переворачивать. Сейчас подумаем...)

Grih65kop писал(а):
31.01.2010 20:15
Что бы не создавать ещё одну тему.
Часто встречаю следующие "на чистом баше" или же "код регистро-зависимым", как это понять
Спасибо.

Первое - без использования каких-либо других языков (например, perl'а). Второе - смысл кода зависит от выбора строчных или заглавных букв. Например, компилятор C знает тип "int", но не знает, что такое "Int".
Спасибо сказали:
Grih65kop
Сообщения: 145

Re: Перевернуть текст

Сообщение Grih65kop »

Фантом, увы rev не подходить, он переворачивает весть текст.

Было:
123:qwer@dfdf.ru

Стало:
ur.fdfd@rewq:321

Надо:
qwer@dfdf.ru:123
Спасибо сказали:
WTakET
Сообщения: 73
ОС: Debian GNU/Linux squeeze/sid

Re: Перевернуть текст

Сообщение WTakET »

awk -F: '{ print $2 ":" $1 }' test
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Перевернуть текст

Сообщение t.t »

Можно и без awk:

Код: Выделить всё

cut -d : -f 2,1 <file
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Перевернуть текст

Сообщение smaharbA »

t.t писал(а):
01.02.2010 13:26
Можно и без awk:

Код: Выделить всё

cut -d : -f 2,1 <file


gw1:~# echo '123:qwer@dfdf.ru' | cut -d: -f 2,1
123:qwer@dfdf.ru
Я конечно далек от мысли...(с)
Спасибо сказали:
GuttaLinux
Сообщения: 212
ОС: 1004/804/910/sid/etch/arch

Re: Перевернуть текст

Сообщение GuttaLinux »

-d "@"
Я иду на платформу 10.04
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Перевернуть текст

Сообщение t.t »

smaharbA писал(а):
01.02.2010 13:46
t.t писал(а):
01.02.2010 13:26
Можно и без awk:

Код: Выделить всё

cut -d : -f 2,1 <file
gw1:~# echo '123:qwer@dfdf.ru' | cut -d: -f 2,1
123:qwer@dfdf.ru
Да, прошу прощения, подзабыл уже: cut не учитывает порядок указания полей.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Перевернуть текст

Сообщение drBatty »

Grih65kop писал(а):
31.01.2010 20:15
Есть текст:

123:qwer@dfdf.ru
www:sd@wdwd.com
54sdsd5:sdsdsdsd

Из него надо получить следующие:
qwer@dfdf.ru:123
sd@wdwd.com:www
sdsdsdsd:54sdsd5

Код: Выделить всё

sed -r 's/([^:]*):(.*)/\2:\1/'

PS: в этом случае awk и cut будут быстрее, особенно cut
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Перевернуть текст

Сообщение t.t »

drBatty писал(а):
01.02.2010 15:24
PS: в этом случае awk и cut будут быстрее, особенно cut
В данном случае cut не даст нужного результата, как уже сказали.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали: