0

以下のような内容のファイルがあり、3 つの列をフォーマット/整列する必要がありました。

ABCD  XYZAB 1234
PQRSTUV   STU  9113
LMN        OPRQM   8966

次のシェルスクリプトを思いつきました:

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
4

1 に答える 1

2

出力をパイプするcolと、必要に応じてスペースのシーケンスがタブに削減されます。

while read -r col1 col2 col3;
do printf "%-20s%-80s%-80s\n" "$col1" "$col2" "$col3";
done <spaced-define.txt | col > tabbed-define.txt
于 2013-03-29T21:24:09.190 に答える