Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Редактор для работы с колонками (текста)  (Прочитано 6332 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Виктор Перестукин

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2174
    • Просмотр профиля
Нужен редактор для работы с колонками текста. Все файлы в формате .txt. Примерная структура файла:
Цитировать
# Сначала идут строки с комментариями. Они помечены символом решетки.
# Таких строк обычно 5-20 (число разное). Их я не трогаю.
# Далее - данные в виде простой таблицы. Знаков обычно 5-8 (здесь - 3).
1.00 2.00 1.00
1.50 2.25 0.66
2.00 4.00 0.25

Вот, что нужно сделать:
Цитировать
В этом примере 3 колонки и 3 строки. Колонок обычно 5-6, а строк = 10 - 1000.
Мне, например, надо перенести всю 3-ю клонку на место 2-й, или удалить 1-ю.

Конечный формат файла должен оставаться тем же .txt. Как проще это сделать в ubuntu? Или какой программой?

Оффлайн MonoLife

  • Активист
  • *
  • Сообщений: 358
  • "Пилите, Шура, пилите!" ©
    • Просмотр профиля
    • Under sky of Half-Life
Re: Редактор для работы с колонками (текста)
« Ответ #1 : 01 Марта 2015, 06:45:56 »
*.txt->*.csv->редактор электронных таблиц-> *.txt

Оффлайн maksvlad

  • Активист
  • *
  • Сообщений: 663
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #2 : 01 Марта 2015, 09:57:38 »
libreoffice write. Блочное выделение. Или calс , как написано выше

Пользователь решил продолжить мысль 01 Марта 2015, 09:59:36:
В calc при открытии файла можно указать какой будет разделитель колонок, хоть пробел.
« Последнее редактирование: 01 Марта 2015, 09:59:36 от maksvlad »
openSUSE 12.3 > openSUSE 13.1 > Ubuntu-minimal 14.04 x64 + KDE 4.14.2 > Gentoo + Plasma 5.8 @ Acer ASPIRE V3-571G-736b8G75BDCa
LinuxMint Mate @ Asus EEEPC 1000H

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #3 : 01 Марта 2015, 10:26:38 »
awk
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Виктор Перестукин

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2174
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #4 : 01 Марта 2015, 10:54:54 »
Всем спасибо!
Если честно, то я сам-то ещё ничего не пробовал. Самое первое, что пришло в голову - это электронные таблицы. Сначала надо разобраться с экспортом (импортом).
Про блочное выделение даже и не слышал, наверное.
Возможно, awk - выход, но его надо сначала изучить.

Будем посмотреть. :D

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #5 : 01 Марта 2015, 11:33:58 »
А еще я не помню названий, но есть стандартные гнушные проги для таких операций. Гугленье по каждой из них обычно выводит в первой ссылке правильную команду.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #6 : 01 Марта 2015, 12:42:06 »
Linuxовая консоль как раз "заточена" на работу с текстовыми документами.
Поменять 2 и 3 столбец
Код: (bash) [Выделить]
awk '!/^#/{print $1,$3,$2,$4,$5,$6}/^#/' file.txt
Код: (bash) [Выделить]
awk '!/^#/{tmp=$3;$3=$2;$2=tmp}1' file.txt
Код: (bash) [Выделить]
sed -r '/^#/!s/ (\S+) (\S+)/ \2 \1/' file.txtУдалить 1:
Код: (bash) [Выделить]
sed -r 's/^[^# ]+ //' file.txt
Код: (bash) [Выделить]
awk '!/^#/{for(i=1;i<=NF;i++)$i=$(i+1);del $NF}1' file.txt
Код: (bash) [Выделить]
awk '!/^#/{for(i=2;i<NF;i++)printf("%s ",$i);print $NF}/^#/' file.txt
Код: (text) [Выделить]
while read line;do set -- $line;[[ "$line" != \#* ]] && shift;echo $@;done < file.txt
Код: (html) [Выделить]
while read line;do [[ "$line" != \#* ]] && $line=${line#* };echo $line;done <file.txtМожно, конечно, попробовать освоить vim в "визуальном" режиме…
« Последнее редактирование: 01 Марта 2015, 13:09:28 от Azure »
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #7 : 01 Марта 2015, 12:47:07 »
geany
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Виктор Перестукин

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2174
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #8 : 01 Марта 2015, 13:25:39 »
Небольшое уточнение. Это не совсем моё. :)
Коллега интересуется. Это для gnuplot.

Сам начал читать про awk, смутило наличие текста в начале файла, оставил. Но сейчас попробую разобраться с рекомендациями Azure.

Посмотрю geany. Чего-то наш специалист по geany молчит.

Смотрел mc, пока оставил.

И пробовал в LibreOffice Writer. Возможно, кто-то будет смеятся. Но так. Открыл файл file1.txt в LibreOffice Writer, преобразовал текст в таблицу. В таблице переставил, как надо. Преобразовал таблицу в текст. Сохранил, не смотря на предупреждение в формате txt.

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #9 : 01 Марта 2015, 17:18:17 »
Я ничего такого не хочу сказать, и это даже, наверное, оффтоп, но почему именно gnuplot?
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Виктор Перестукин

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2174
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #10 : 01 Марта 2015, 20:58:47 »
Phlya, многолетний опыт использования. И проект по прежнему развивается (последняя версия от 31.12.2014).

PS
Получил оригинальные файлы данных. LOW можно смело отбросить. Awk "рулит". :D

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #11 : 03 Марта 2015, 13:04:43 »
И пробовал в LibreOffice Writer. Возможно, кто-то будет смеятся. Но так. Открыл файл file1.txt в LibreOffice Writer, преобразовал текст в таблицу. В таблице переставил, как надо. Преобразовал таблицу в текст. Сохранил, не смотря на предупреждение в формате txt.
Вот это правильно. И голова не болит.

Оффлайн Виктор Перестукин

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2174
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #12 : 03 Марта 2015, 15:37:34 »
alexander.pronin,
тут вот, какая проблема возникла. Колонки разделены табуляцией или как-то иначе, столбики ровные. Но при этом число пробелов между числами разное (см. прикреплённый файл). Я пробовал (в Libreoffice Writer) заменять два пробела на один, и так несколько раз. Но после каждой замены выделение снимается и выделять по новой долго. А один пробел нужен для преобразования текста в таблицу.

В общем, остановился я на командах Azure.
Меняем местами вторую и третью колонки:
awk '!/^#/{print $1,$3,$2}' dat1.dat > dat2.datили то же самое, но с табуляцией:
awk '!/^#/{print $1 "\t" $3 "\t" $2}' dat1.dat > dat2.datВ файле dat2.dat нет текстовой "шапки", пока проще сейчас вставить вручную (скопировав из dat1.dat). Тем более, ещё заголовки нужно поменять местами.

Удаляем первую колонку (просто выводим вторую и третью):
awk '!/^#/{print $2,$3}' dat1.dat > dat2.dat

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #13 : 03 Марта 2015, 15:51:35 »
В файле dat2.dat нет текстовой "шапки"
А не надо "кастрировать" оригинальный скриптawk '!/^#/{print $1,$3,$2}/^#/' dat1.dat > dat2.dat(если не понимаете — спросите), тем более что все варианты рабочие. Для варианта с табуляцией логичнее применять переменную OFSawk -v OFS="\t" '!/^#/{print $1,$3,$2}/^#/' dat1.dat > dat2.dat
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Виктор Перестукин

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2174
    • Просмотр профиля
Re: Редактор для работы с колонками (текста)
« Ответ #14 : 03 Марта 2015, 18:09:06 »
Azure, извиняюсь!
Хотел ведь спросить для чего повторяется! Так как сначала использовал стандартный вывод, то не заметил отличий (точнее, не обратил внимания).

Кстати, настраивается ли длина табуляции? Не знаю, как правильно написать. При использовании табуляции столбцы расположены близко друг к другу, хотелось бы подальше.

 

Страница сгенерирована за 0.38 секунд. Запросов: 21.