Tr

tr 命令的列格式錯誤

  • March 14, 2021

我有這樣的文件

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

我想通過標籤更改每個“:”。為此,我使用了 tr 命令

tr ":" "\t"

但我得到了這個

ABC     12345   FIRSTLINE
DEFGH   1112232 SECONDLINE
IJK     77623786487261  THIRD LINE

我想讓第三列中的單詞都從同一個地方開始,但是當上一列中的單詞太長時,下一列中的單詞似乎比我想要的移動了很多。有沒有快速解決這個問題的方法?

謝謝。

嘗試這個:

$ 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命令使用給定的分隔符生成一個表。

我不知道是否tr可以解決它,但awk非常擅長解決此類問題。

printfin 命令的工作awk方式與 in 非常相似C。格式字元串中的減號%-8s使輸出左對齊。

該開關-F:將欄位分隔符設置為:,這會導致 awk 變數$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

引用自:https://unix.stackexchange.com/questions/639240