计算尾随空格

时间:2013-09-29 21:28:47

标签: linux bash sed

我需要帮助创建一个使用sed命令计算尾随空格的sed脚本。

我可以使用sed -n '$='计算一行中的单词,但是如何为空格和尾随空格执行此操作?

bash的新用户,所以我感谢能得到的任何帮助 感谢

*的 修改 *

我必须使用sed这样做,那么如果我只是想打印线条(带有尾随的空格)而不是计算它们?

我可以使用p并执行此操作:

sed  '/  /p' space.sed

不确定如何表示两个连续的空格,我会有一个没有前导空格的文件,所以这会检测到尾随空格。

1 个答案:

答案 0 :(得分:5)

sed -n '$='

  

计算一行中的单词

它会打印文件中最后一行的行号。所以它计算文件中的行。

这可以计算每行中的尾随空格。 (如果你想要它们的总和,那真的很容易。)

 awk '{t=length($0);sub(" *$","");print t-length($0)}' file

例如,我有一个文件(名为f),内容如下,(结尾的“点”不存在,仅用于显示尾随空格)。

aaaaa     .
bbbbb    .
ccccc   .

上面的awk单行:

kent$  awk '{t=length($0);sub(" *$","");print t-length($0)}' f
5
4
3

修改

因为sed是解决这个问题的必要条件(我不明白为什么,除非它是一个功课)。这条线适合您的需要,请注意, GNU Sed 是必需的:

kent$   sed -r 's/(.*\S)( *$)/expr length "\2"/ge'  f                                                                                                                        
5
4
3
  • 在上面的sed行中,只使用了sed expr不能算作工具吗?它可以被称为“单独的sed”解决方案吗?
  • 无论如何,你正试图用锤子拧螺丝。

我刚刚看到你问题的更新,如果你只想打印带尾随空格的行,那就更容易了:( IMO,grep将是最好的工具)

 sed -n '/ \+$/p' file

会做的。