将文本文件分隔为列;

时间:2017-12-13 21:03:27

标签: linux bash awk gawk

我有一个用空格分隔的文本文件。我想将它输出到由;

分隔的列

示例 输入

31561 49215 10   1196825801480000
31561 49219 12   1196825801480000
31561 48665 14   1196825806980000

我使用此代码

tr " " ";" < file

我的输出

31561;49215;10;;;1196825801480000
31561;49219;12;;;1196825801480000
31561;48665;14;;;1196825806980000

需要输出。

31561;49215;10;1196825801480000
31561;49219;12;1196825801480000
31561;48665;14;1196825806980000

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

awk -v OFS=';' '{$1=$1}1' file

$1=$1是使用新分隔符$0重建OFS=';'的技巧。

答案 1 :(得分:4)

sed -r 's/ +/;/g' < file.txt

答案 2 :(得分:2)

使用

    tr -s " " ";" < file 

阅读手册:https://wiki.ubuntuusers.de/tr/

  

-s
  将输入中最后一个操作数(string1或string2)中列出的多次出现的字符挤压到该字符的单个实例中。所有删除和翻译完成后都会发生这种情况。