我需要帮助创建一个使用sed
命令计算尾随空格的sed脚本。
我可以使用sed -n '$='
计算一行中的单词,但是如何为空格和尾随空格执行此操作?
bash
的新用户,所以我感谢能得到的任何帮助
感谢
*的 修改 : *
我必须使用sed
这样做,那么如果我只是想打印线条(带有尾随的空格)而不是计算它们?
我可以使用p
并执行此操作:
sed '/ /p' space.sed
不确定如何表示两个连续的空格,我会有一个没有前导空格的文件,所以这会检测到尾随空格。
答案 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
expr
不能算作工具吗?它可以被称为“单独的sed”解决方案吗?我刚刚看到你问题的更新,如果你只想打印带尾随空格的行,那就更容易了:( IMO,grep将是最好的工具)
sed -n '/ \+$/p' file
会做的。