列与列表而不是空格的相等对齐

时间:2013-03-29 21:17:51

标签: linux perl bash shell

我的文件内容如下,有三列需要格式化/对齐:

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

1 个答案:

答案 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
相关问题