Форматирование вывода bash.
Форум — General
Есть скрипт, который на выходе выводит строки из двух или трех полей.
Пример неформатированного вывода может быть такой:
1 Name http://example.com/
21 Name 2 http://example.com/
337 Name (AB) AB http://example.com/
300016 Name5 http://example.com/
Name (name) http://example.com/
Т.е. первое поле содержит (или не содержит) номер, второе имя, третье адрес в интернете. Задача - сформировать три ровных столбца. Как не мучаюсь, полностью ровно сделать не выходит. Получается так:
1 Name http://example.com/
21 Name 2 http://example.com/
337 Name (AB) AB http://example.com/
300016 Name5 http://example.com/
Name (name) http://example.com/
Пример скрипта, который полностью эмулирует ситуацию:
#!/bin/bash
cat << EOF > columns932
1 Name http://example.com/
21 Name 2 http://example.com/
337 Name (AB) AB http://example.com/
300016 Name5 http://example.com/
Name (name) http://example.com/
EOF
cat columns932 | while read i; do
NUM=`echo $i | sed -n 's/\(^[0-9]*\) .*/\1/p'`
NAME=`echo $i | sed -n 's/^[0-9]* *\(.*\) http.*/\1/p'`
HTTP=`echo $i | sed -n 's/.* \(.*$\)/\1/p'`
echo -n-e "$NUM\t$NAME\t\t$HTTP \n"
done