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

Awk 使用sed删除最后一个字符串和冒号之间的所有空格,只有一个空格,awk,sed,Awk,Sed,我有以下格式的数据 pid : BP itmi : 40 stsus : NO ltm : Ha Pr 我试图删除除最后一个字符和冒号之间的空格外的所有空格 pid : BP itmi : 40 stsus : NO ltm : Ha Pr 现在,如果我试图使用sed删除空间,它将删除

我有以下格式的数据

pid                           : BP
itmi                          : 40
stsus                         : NO
ltm                           : Ha Pr
我试图删除除最后一个字符和冒号之间的空格外的所有空格

 pid : BP
 itmi : 40
 stsus : NO
 ltm : Ha Pr
现在,如果我试图使用sed删除空间,它将删除所有空间,而不考虑位置

有任何相同的帮助。

您可以尝试

<infile tr -s '[[:blank:]]'
您可以试试

<infile tr -s '[[:blank:]]'
带有
sed

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

pid : BP
itmi : 40
stsus : NO
ltm : Ha Pr
不过,使用
tr
可能会更好。

使用
sed

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

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

不过,您最好使用
tr

这个简短的awk单行程序应该适用于您的示例:

awk '$1=$1' file
测试:


此短awk单衬套适用于您的示例:

awk '$1=$1' file
测试:

假设标题“删除所有空格,但最后一个字符串和冒号之间只有一个空格”是实际任务(而不是示例输出和消息正文中显示的内容,它在
前面留有空格),请尝试此
sed
代码:

sed 's/  *//' datafile
输出:

pid: BP
itmi: 40
stsus: NO
ltm: Ha Pr
假设标题“删除所有空格,但最后一个字符串和冒号之间只有一个空格”是实际任务(而不是示例输出和消息正文中显示的内容,它在
前面留有空格),请尝试此
sed
代码:

sed 's/  *//' datafile
输出:

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

后面的空格是单独留下的,因此
Ha Pr
不会变成
HaPr
“除一之外的所有”都会在冒号前面留下一个空格。@glennjackman,Re“before”:它可能是“after”,因为介词“between”(不像说“from”)没有指定顺序。
后面的空格是单独留下的,因此,
Ha Pr
不会变成
HaPr
“除一之外的所有”都会在冒号前留下一个空格。@glennjackman,Re“before”:它可能是“after”,因为介词“between”(不像说“from”)没有指定顺序。标题意味着第1行应该变成
pid:BP
。(“BP”是该行的最后一个字符串。)哪一个是正确的:标题还是消息正文?因此您希望在每行的开头添加一个空格,就像在发布的输出中一样,对吗?标题意味着第1行应该变成
pid:BP
。(“BP”是该行上的最后一个字符串。)哪一个是正确的:标题还是消息正文?因此您希望在每行的开头添加一个空格,就像在发布的输出中一样,对吗?这总是会截断固定的空格。。我正在尝试删除最后一个字符串和冒号之间的所有空格,但最后一个字符串和冒号之间的空格除外。此操作始终截断固定空格。。我试图删除最后一个字符串和冒号之间的所有空格,但最后一个空格中的一个除外