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
我想讓第三列中的單詞都從同一個地方開始,但是當上一列中的單詞太長時,下一列中的單詞似乎比我想要的移動了很多。有沒有快速解決這個問題的方法?
謝謝。
嘗試這個:
$ 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
非常擅長解決此類問題。
printf
in 命令的工作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