tr 命令的列格式错误

tr 命令的列格式错误

我有一个这样的文件

AAA:111111:FIRSTLINE
BBBBBBB:22222222222:SECONDLINE
CCC:33333333333333333333:THIRD LINE

我想用制表符更改每个“:”。为此,我使用了 tr 命令

tr ":" "\t"

但我得到了这个

ABC     12345   FIRSTLINE
DEFGH   1112232 SECONDLINE
IJK     77623786487261  THIRD LINE

我想让第三列中的单词全部从同一个位置开始,但似乎当前一列中的单词太长时,下一列中的单词会比我想要的向前移动很多。有没有快速解决这个问题的方法?

谢谢。

答案1

尝试这个:

$ cat ex
AAA:111111:FIRSTLINE
BBBBBBB:22222222222:SECONDLINE
CCC:33333333333333333333:THIRD LINE

$ column --table --separator ':' ex
AAA      111111                FIRSTLINE
BBBBBBB  22222222222           SECONDLINE
CCC      33333333333333333333  THIRD LINE

column命令生成一个带有给定分隔符的表。

答案2

我不知道是否tr能解决它,但awk很擅长解决这样的问题。

命令printfin 的awk工作方式与 in 非常相似C。格式字符串中的减号%-8s使输出左对齐。

该开关-F:将字段分隔符设置为:,这会导致 awk variabels $1$2$3设置为由该分隔符分隔的文本。请务必在命令行上使用单引号,以免bash尝试解释它们。

awk -F: '{printf "%-8s %-21s %s\n",$1,$2,$3}' file.txt

通过您的输入文件,我得到了以下输出:

AAA      111111                FIRSTLINE
BBBBBBB  22222222222           SECONDLINE
CCC      33333333333333333333  THIRD LINE

相关内容