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
しましょう。