LINUX.ORG.RU

Уравнять количество символов в строках текстового файла и выровнять содержимое

 ,


0

1

Всем Привет! Появилась специфическая задача по форматировке текста. Содержимое текстового файла следующее:

1	3	4	5	6
1	2
1	2	3
1	2	3	4	5	6	7
Символы (цифры) разделены табуляциями. Необходимо получить:
    1	3	4	5	6
     					1	2
  			  	1	2	3
1	2	3	4	5	6	7
Указанное выранивание необходимо сделать путём добавления табуляций в начало строк. Таким образом, чтобы в каждой строке было одинаковое количество символов. Попробовал выравнивание по правому краю путём:
sed -e :a -e 's/^.\{1,78\}$/\
&/;ta' 3 > 4
получил кучу пустых строк наряду с неразделёнными символами. Нужна ваша помощь, многоуважаемый All.

ps Такое выравнивание необходимо для правильного импорта данного текста в LibreCalc. Чтоб получить это: http://piccy.info/view3/8034849/31454d54e3e4577ac5567b63ea0a52e1/

Ответ на: комментарий от unterwulf

А это уже не то, - выравнивает левую сторону текста по 7 столбцу. Надо правую. Впрочем, вопрос уже решён.

sspphheerraa
() автор топика

для правильного импорта данного текста в LibreCalc

Тебе нужен csv

,,1,3,4,5,6
,,,,,1,2
,,,,1,2,3
1,2,3,4,5,6,7
anonymous
()
Ответ на: комментарий от anonymous

Задача уже решена. Вот так:

$ while read var; do echo $var | awk '{printf "%7s\n", $0}'; done <01.txt > 02.txt
$ sed -e "s/  /q /g" 02.txt > 03.txt
$ sed -e "s/ /\t/g" 03.txt > 04.txt
$ sed -e "s/q/ /g" 04.txt > 05.txt
Далее текст правильно импортируется в Calc (режется по табуляциям).

sspphheerraa
() автор топика
Ответ на: комментарий от sspphheerraa

printf тоже я тебе советовал, но с запятыми (без всяких пробелов и табуляций) проще и нагляднее же.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.