我的文件内容如下,有三列需要格式化/对齐:
ABCD XYZAB 1234
PQRSTUV STU 9113
LMN OPRQM 8966
我提出了以下shell脚本:
while read -r col1 col2 col3;
do printf "%s%-80s%-80s\n" "$col1" "$col2" "$col3";
done <spaced-define.txt > tabbed-define.txt
并设法让它们像这样对齐,中间有空格:
ABCD <SPACES> XYZAB <SPACES> 1234
PQRSTUV <SPACES> STU <SPACES> 9113
LMN <SPACES> OPRQM <SPACES> 8966
我无法弄清楚如何使用制表符而不是空格来实现相同的对齐?
ABCD <TABS> XYZAB <TABS> 1234
PQRSTUV <TABS> STU <TABS> 9113
LMN <TABS> OPRQM <TABS> 8966
答案 0 :(得分:2)
如果将输出传输到col
,则会在适当时将空格序列减少到TAB。
while read -r col1 col2 col3;
do printf "%-20s%-80s%-80s\n" "$col1" "$col2" "$col3";
done <spaced-define.txt | col > tabbed-define.txt