Автор Тема: А можно дубля сделать, который строки словаря переставит на второй-первый?{УРА}  (Прочитано 787 раз)

Оффлайн Kirikekeks

  • Полу-попутчик, полу-мудрец, полу-невежда, полу-подлец...
  • Давно тут
  • **
  • Сообщений: 314
    • Email
Добрый день местным Кристобалям Хосеевичам!
Делаю для телефона уроки-словари Ru-Fi с простым форматом -
Ru →дом
Fi→talo
Слов  в уроке 20-30, и учить в этом порядке уже не надо, хочется поменять порядок на FI→Ru
для чего нужно все пары слов поменять местами:
talo
дом
И слышал я, что линукс-маги умеют делать дублей-скрипты, которые выполняют за них рутинную работу.
Подскажите:
- литературу по магии bash
- способ, который надо читать в этом конкретном случае 
« Последнее редактирование: 24.06.2015 21:27:57 от Kirikekeks »
Ламер

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
А слово и превод в одной строчке, или в соседних?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email

Оффлайн Kirikekeks

  • Полу-попутчик, полу-мудрец, полу-невежда, полу-подлец...
  • Давно тут
  • **
  • Сообщений: 314
    • Email
или в соседних?
В соседних, одна строка на слово, другая - на перевод.
Ламер

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
или в соседних?
В соседних, одна строка на слово, другая - на перевод.
А показывается как?
Разумнее было бы сделать таблицу, разделённую табуляцией или запятой. А при паррсинге read считывает поля и показывает в нужной последовательности.
А замена чётных и нечётных строк: http://stackoverflow.com/questions/6818284/how-to-switch-rotate-every-two-lines-with-sed-awk
sed -n '$p;h;n;p;g;p'
Андрей Черепанов (cas@)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Читаете в цикле по две строки по команде read в  2 переменные, а потом в другой файл командой echo записываете их в обратном порядке. Возможно, надо пропустить какие-то строки (шапка, комментарии и т.п.), что-бы не перепутать где значение, где перевод.

Первое, что попалось по теме:
http://habrahabr.ru/post/120198/

Оффлайн Kirikekeks

  • Полу-попутчик, полу-мудрец, полу-невежда, полу-подлец...
  • Давно тут
  • **
  • Сообщений: 314
    • Email
А замена чётных и нечётных
Дубль - фантастический! Я уже думал "I have been doing this by hand and I just can't do it anymore-" потому что не понял ответа, но:
sed -n '$p;h;n;p;g;p' luku2.gl |tee цифры.glone, один, 1
Yksi
too, два, 2
Kaksi
three, три, 3
Kolme
four, четыре, 4
Neljä
five, пять, :
Viisi
six, шесть, 6
Kuusi
seven, семь, 7
Seitsemän
eight, восемь, 8
Yhdeksän
nine, девять, 9
Kahdeksan
ten, десять, 10
Kymmentä
handred, сто, 100
Sata
thousend, тысяча, 1000
Tuhat
eleven, одиннадцать, 11
yksitoista
двенадцать,twelve, 12
kaksitoicta
тринадать, thirteen, 13
kolmetoista
« Последнее редактирование: 24.06.2015 23:42:15 от Kirikekeks »
Ламер

Оффлайн Kirikekeks

  • Полу-попутчик, полу-мудрец, полу-невежда, полу-подлец...
  • Давно тут
  • **
  • Сообщений: 314
    • Email
Ну и я написал свой первый скрипт, понятно, что комом, например а вдруг в папке с уроком два файла *.gl?? В живых останется только последний?
Так что как в песне У Семёна Слепакова © "...а что бл? если нет? Вот так вот раз - и нет?" Значит - нет. Но у меня - работает.
#!/bin/bash
find * -iname *.gl -ok sed -n '$p;h;n;p;g;p' "{}" \;|tee rufi.gl

« Последнее редактирование: 25.06.2015 06:26:23 от Skull »
Ламер

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Вы используйте команду basename, что-бы у файлов была одна и та-же основа

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Ну и я написал свой первый скрипт, понятно, что комом, например а вдруг в папке с уроком два файла *.gl?? В живых останется только последний?
Так что как в песне У Семёна Слепакова © "...а что бл? если нет? Вот так вот раз - и нет?" Значит - нет. Но у меня - работает.
#!/bin/bash
find * -iname *.gl -ok sed -n '$p;h;n;p;g;p' "{}" \;|tee rufi.gl
Используйте sed -i, чтобы править файл по месту:
find * -iname *.gl -ok sed -in '$p;h;n;p;g;p' "{}" \;
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Я бы однострочник не писал, а завернул в while read .... done.
Или через -exec попробовал.
Андрей Черепанов (cas@)

Оффлайн Kirikekeks

  • Полу-попутчик, полу-мудрец, полу-невежда, полу-подлец...
  • Давно тут
  • **
  • Сообщений: 314
    • Email
Я бы однострочник не писал,
Спасибо большое!
Не будем сравнивать всеведующих с ламерами, © "По барину говядина, по говну - черепок"
В сухом остатке имею вот такой черепок:
#!/bin/bash
# this script is changes places every  two lines 1-2-3-4-5-6 → 2-1-4-3-6-5
echo -n "Enter the new filename in new.name.gl format: "
read fname
find * -iname "*.gl" -ok sed -n '$p;h;n;p;g;p' "{}" \;|tee "$fname"
который позволяет выбрать нужный для перелопачивания файл:
Спойлер
~/Suomi/kolme $ ./for.1.file-dubel.sh
Enter the new filename in new.name.gl format: 3rufi.gl
< sed ... 2rufi.gl > ? n
< sed ... rufi.gl > ? n
< sed ... viikonpäivät_kuu.gl > ? y
понедельник, monday
maanantai
вторник, tuesday
tiistai
среда, Wednesday
keskiviikko
четверг,
torstai
пятница, Friday
perjantai
суббота, Saturday
lauantai
воскресенье, Sunday
sunnuntai
дни недели
viikonpäivät
месяц
kuukaudet
январь, January
tammikuu
февраль, February
helmikuu
март, March
maaliskuu
апрель, April
huhtikuu
май, May
kesäkuu
июль, July
heinäkuu
август, August
elokuu
сентябрь, September
syyskuu
октябрь, October
lokakuu
ноябрь, November
marraskuu
декабрь, December
joulukuu

Целых три! строки получилось. А в случае принятия нескольких файлов на обработку, каждый последующий дописывается в конец файла, что тоже хорошо.
« Последнее редактирование: 26.06.2015 08:46:37 от Kirikekeks »
Ламер