我有一个这样的文件
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
很擅长解决这样的问题。
命令printf
in 的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