1

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

我可以通过使用来计算一行中的单词,sed -n '$='但是对于空格和尾随空格我该怎么做呢?

新来的,bash所以我很感激我能得到的任何帮助,
谢谢

*编辑 *

我必须为此使用sed,如果我只想打印行(带有尾随空格)而不是计算它们怎么办?

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

sed  '/  /p' space.sed

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

4

1 回答 1

6

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 行中,只有sedwas usedexpr不能算作工具,对吗?那么它可以称为“单独的sed”解决方案吗?
  • 无论如何,您正试图用锤子拧螺丝。

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

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

会做。

于 2013-09-29T21:38:58.360 回答