Unixファイルで段落を処理する

Unixファイルで段落を処理する

私はLinuxで3つの段落を含むテキストファイルを作成しました。ここで、ファイルの内容を表示しながら、結果に各段落の行番号を表示したいと思います。

私のファイルの内容は次のとおりです。

      以下は、百科事典を閲覧するのに役立つコンテンツナビゲーションシステムです。検索の代替として使用されます。

      以下は、百科事典を閲覧するのに役立つコンテンツナビゲーションシステムです。検索の代替として使用されます。

      以下は、百科事典を閲覧するのに役立つコンテンツナビゲーションシステムです。検索の代替として使用されます。

これで、結果を次のように印刷したいと思います。

1以下は内容です...(最初の段落)

2次は...(2番目の段落)などです。

ファイルの各段落には行間隔があります。

また、上記のファイルの最後の段落のみを印刷するには、別のコマンドを使用する必要があります。

私はUbuntuを使用しています。

答え1

真珠、短絡モード -00、入力行-pと数字を含むカスタムプレフィックスを印刷します。

% (echo hi; echo; echo there) | perl -00 -pe 'print ++$x, " "'

最後の段落は

% (echo hi; echo; echo there) | perl -00 -ne '$l=$_; END { print $l }'

答え2

これを使用してawk段落番号を追加できます。ファイルが呼び出されたと仮定すると、input次のことができます。

awk 'BEGIN {para=1} !/^\s*$/ {printf "%d %s\n", para, $0; para+=1;next};1' input

これは、我々が見た段落数のカウンタを維持し、空でない行が現れるたびに現在のカウンタを前に追加し、カウンタをインクリメントします。

最後の段落を取得するには、末尾に不要な空白行がある可能性があると仮定して、awkを同様に使用できます。

awk '!/^\s*$/ {line=$0} END{print line}' input

関連情報