微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Linux中将分隔文件转换为固定宽度

使用可用于bash的工具,如何转换分隔数据

foo|bbbaaarrr|bazz

固定宽度数据

foo      bbbaaarrrbazz     EOL   

我尝试使用列作为文档隐含我可以定义列宽,没有用.
我确定使用sed或awk这是微不足道的,但我不熟悉它们.

解决方法:

以下内容对您有用:

column -t -s '|' input_file_here

它会将输入文件转换为表格格式.输入记录分隔符由-s指定.如果在字段中需要除空格填充之外的其他内容,请使用-o设置输出分隔符.输出分隔符认为两个空格,因此输出中每列之间将有两个空格.

例:

$cat input
hello|world|testing
a|b|c
another|test|line

$column -t -s '|' input
hello    world  testing
a        b      c
another  test   line

http://man7.org/linux/man-pages/man1/column.1.html

编辑:

如果您需要每个字段都是固定长度,则可以使用awk.您需要为文件设置输入分隔符,但是这样的东西应该有效:

$awk -F '|' '{ for (i=1; i<=NF; i++) { printf("%-10s", $i); } print ""; }' input
hello     world     testing
a         b         c
another   test      line

只需更改printf语句中指定的字段宽度即可.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐