Linux 将数据分隔为列的特定分隔符

Linux 将数据分隔为列的特定分隔符,linux,shell,ubuntu,awk,Linux,Shell,Ubuntu,Awk,我有一组数据名Book.txt,我想在shell中显示它们。但是,我在尝试使用特定分隔符对列中的数据进行分组时遇到问题 Book.txt包含: Harry Potter 1:Author1:100 Lord Of The Rings:Author2:200 我可以用以下代码在Book.txt中显示数据: awk -F':' '{print $1 "\t" $2}' ./Book.txt 不过,我希望它们能够很好地排列在列中,所以我尝试使用管道列 awk -F':' '{print $1 "

我有一组数据名Book.txt,我想在shell中显示它们。但是,我在尝试使用特定分隔符对列中的数据进行分组时遇到问题

Book.txt包含:

Harry Potter 1:Author1:100
Lord Of The Rings:Author2:200
我可以用以下代码在Book.txt中显示数据:

awk -F':' '{print $1 "\t" $2}' ./Book.txt 
不过,我希望它们能够很好地排列在列中,所以我尝试使用管道列

awk -F':' '{print $1 "\t" $2}' ./Book.txt | column -s "/t"

但当我尝试它时,它似乎不起作用。我不能使用列-t,因为我的标题有空格,它充当分隔符。我想改用“tab”作为分隔符

您可以直接使用
命令吗

column-s:'-t Book.txt

结果:

Harry Potter 1     Author1  100
Lord Of The Rings  Author2  200

这说明了标题和最后一列的删除:

$ cat file 
Book Header
Harry Potter 1:Author1:100
Lord Of The Rings:Author2:200

$ awk -F':' -v OFS=':' '{print $1, $2}' file | column -s: -t
Book Header
Harry Potter 1     Author1
Lord Of The Rings  Author2

对不起,是在cygwin上<代码>列现在可以开始工作了!这段代码很短,但却完全符合我的要求。谢谢@user1958567这将在第三列中留下?@sudo_O是的,它还打印出第三列column@user1958567你只希望第一列和第二列显示正确吗?嘿,sudo,谢谢,它能工作!但你能解释一下这是怎么回事吗?”BEGIN{FS=OFS=“:”}您已经知道使用
-F
设置的
FS
,这是字段分隔符变量,在本例中为
OFS
将输出字段分隔符设置为
,这样字段分隔符就不会因
awk
而改变,从而允许
列使用
-s:
来实现它的魔力。如果此答案最有用,请单击旁边的复选标记接受此答案。