使用sed删除最后一个字符串和冒号之间的所有空格

时间:2017-12-12 19:14:37

标签: awk sed

我有以下格式的数据。

pid                           : BP
itmi                          : 40
stsus                         : NO
ltm                           : Ha Pr

我正在尝试删除除最后一个字符和冒号之间的所有空格。

 pid : BP
 itmi : 40
 stsus : NO
 ltm : Ha Pr

现在,如果我尝试使用sed删除空格,则无论位置如何都会删除所有空格。

对此有任何帮助。

4 个答案:

答案 0 :(得分:1)

你可以尝试

<infile tr -s '[[:blank:]]'

答案 1 :(得分:1)

这个短awk单行应该适用于你的例子:

awk '$1=$1' file

测试:

kent$  cat f
pid                           : BP
itmi                          : 40
stsus                         : NO
ltm                           : Ha Pr

kent$  awk '$1=$1' f
pid : BP
itmi : 40
stsus : NO
ltm : Ha Pr

答案 2 :(得分:0)

sed

$ sed -E 's/  +/ /g' file

pid : BP
itmi : 40
stsus : NO
ltm : Ha Pr

你可能会更好地使用tr

答案 3 :(得分:0)

假设标题&#34; 删除除最后一个字符串和冒号之间的所有空格&#34;是实际任务,(而不是示例输出和消息正文中显示的内容,在<{em> :之前留下空格),请尝试此sed代码:

sed 's/  *//' datafile

输出:

pid: BP
itmi: 40
stsus: NO
ltm: Ha Pr