В одну сторону:
$ cat file
Unix Linux Trumpet Perl 1|1 1|2 1|3
$
$ awk -F"[ |]" '{
printf "%-10s %-10s %-10s %-10s %-3s %-3s %-3s\n","","","","",$5,$7,$9;
printf "%-10s %-10s %-10s %-10s %-3s %-3s %-3s\n",$1,$2,$3,$4,$6,$8,$10;
}' file
1 1 1
Unix Linux Trumpet Perl 1 2 3
Это работает, но выполнение echo -e
ничего не выводит в Bash, если обе опции posix
и xpg_echo
не включены, так как -e
интерпретируется как опция:
$ help echo
echo: echo [-neE] [arg...]
Write arguments to the standard output.
Display the ARGs, separated by a single space character and followed by a
newline, on the standard output.
Options:
-n do not append a newline
-e enable interpretation of the following backslash escapes
-E explicitly suppress interpretation of backslash escapes
Используйте
printf "%s\n" "$var"
вместо этого.
И, как отмечает cas в комментарии, Bashdeclare -p var
(typeset -p var
в ksh, zsh и yash (и bash ))можно использовать для указания точного типа и содержимого переменной.
Команда (, подобная вашей echo
), принимает аргументы командной строки, которые могут быть флагами(-e
в вашем случае ). Многие команды (, по крайней мере, распространенные версии Linux ), понимают--
(два дефиса )как "конец флагов, все, что следует за ними, является обычными аргументами". Таким образом, вы можете удалить файл с извращенным именем -r
с помощью rm -- -r
.
Для отображения материала printf
более надежен во всех отношениях (, если его сложнее использовать ).