仅在第一次冒号之前和之后删除空格

时间:2018-01-01 18:21:37

标签: shell awk sed

我有以下格式的数据。

desc                          : ABC 1234567 MNOPQRS 2         AB 0987654

我需要格式

的数据
desc : ABC 1234567 MNOPQRS 2         AB 0987654

我尝试使用awk,但它将其更改为错误的格式,基本上也删除了两者之间的空间。

 awk '$1=$1' sample.txt 
 desc : ABC 1234567 MNOPQRS 2 AB 0987654

我也试过使用不同的awk,但它也没有达到目的。这也增加了输出空间。

awk 'BEGIN{FS=OFS=":"}{gsub(/^[ \t]+/,"",$2);gsub(/[ \t]+$/,"",$1)}1' sample.txt 
desc:ABC 1234567 MNOPQRS 2         AB 0987654

有人可以在我出错的地方帮助我。 desc和冒号之间的空格数可能会改变,因此我不想对空格删除进行硬编码。

问候。

2 个答案:

答案 0 :(得分:3)

我建议使用GNU sed:

sed 's/  *:  */ : /' file

输出:

desc : ABC 1234567 MNOPQRS 2         AB 0987654

答案 1 :(得分:0)

如果您的Input_file与您显示的示例相同,那么遵循awk解决方案也可以帮助您。

awk '{sub(/ +: +/," : ")} 1'  Input_file

输出如下。

desc : ABC 1234567 MNOPQRS 2         AB 0987654