Linux 将数据分隔为列的特定分隔符
我有一组数据名Book.txt,我想在shell中显示它们。但是,我在尝试使用特定分隔符对列中的数据进行分组时遇到问题 Book.txt包含: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 "
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:
来实现它的魔力。如果此答案最有用,请单击旁边的复选标记接受此答案。