Linux 需要关于定义列宽度的建议吗

Linux 需要关于定义列宽度的建议吗,linux,shell,Linux,Shell,我需要一些关于如何完成以下任务的想法/建议,我想写一个简单的shell脚本,应该能够完成这项任务 我有一个名为abc.txt的文件,它有10列,以制表符分隔,我想读取此文件并根据指定的宽度定义列;比方说 第一列宽度=5个空格, 第二列宽度=3个空格, 第三列宽度=4个空格 诸如此类 abc.txt中的数据符合这一要求,但它只是以制表符分隔,有时并非所有宽度都被占用,就像第一列是5个空格,但可能只有4个字符 关于如何最好地完成这项工作的任何建议。一些示例输入会很好 GNU awk可以读取固定宽度的

我需要一些关于如何完成以下任务的想法/建议,我想写一个简单的shell脚本,应该能够完成这项任务

我有一个名为abc.txt的文件,它有10列,以制表符分隔,我想读取此文件并根据指定的宽度定义列;比方说 第一列宽度=5个空格, 第二列宽度=3个空格, 第三列宽度=4个空格

诸如此类

abc.txt中的数据符合这一要求,但它只是以制表符分隔,有时并非所有宽度都被占用,就像第一列是5个空格,但可能只有4个字符


关于如何最好地完成这项工作的任何建议。

一些示例输入会很好

GNU awk可以读取固定宽度的数据:

如果要将制表符分隔的文件转换为固定宽度格式:

while IFS=$'\t' read f1 f2 f3; do
    printf "%-5s%-3d%-4s\n" "$f1" "$f2" "$f3"
done < input > output
而IFS=$'\t'读取f1;做
printf“%-5s%-3d%-4s\n”“$f1”“$f2”“$f3”
完成<输入>输出