1

sedコマンドで末尾の空白をカウントする sed スクリプトを作成するのに助けが必要です。

を使用して行内の単語を数えることはできますが、sed -n '$='スペースと末尾のスペースについてはどうすればよいですか?

新しいbashので、私が得ることができる助けに感謝します、
ありがとう

*編集 *

これを使用する必要がsedあるため、行をカウントするのではなく、(末尾に空白を付けて) 行を印刷したい場合はどうすればよいでしょうか?

これを使用pして実行できますか:

sed  '/  /p' space.sed

2 つの連続する空白を表す方法がわからない場合、先頭に空白がないファイルがあるため、末尾の空白が検出されます。

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行で、sed使用しただけではexprツールとしてカウントできませんよね?「sed単独」ソリューションと呼ぶことができますか?
  • とにかく、ハンマーでネジをねじ込もうとしています。

あなたの質問の更新を見たところです。末尾にスペースがある行を印刷したいだけなら、はるかに簡単です:(IMO、grepはこれに最適なツールです)

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

しましょう。

于 2013-09-29T21:38:58.360 に答える