段落番号を付ける方法

段落番号を付ける方法

この質問をしたことがわかりましたが、有効な回答が得られませんでした。だから誰でも私の質問に答えることができますか?

各段落が空白行で区切られたテキスト段落を含むテキストファイルがあります。これで、各段落に一意の番号を付ける必要があります。したがって、最初の段落の余白には数字1があり、2番目の段落の余白には数字2があり、3番目の段落の余白には数字3があります。これは当然のように思われますが、前回の投稿はメッセージを明確に伝えていない可能性があると思います。

そのため、これを実行できるLinuxコマンドが必要です。しかし、問題はコマンドが単純でなければならないということです。私は、複雑なPerlスクリプトやあいまいなコードブロックがないことです。

私が探しているのは、作業を簡単に実行できる簡単なコマンドです。または、スクリプトを作成する必要がある場合は、PerlまたはBashスクリプトを使用したことがない人も、スクリプトをコードに適用し、何をしているのかを理解できるようにし、コードを説明してください。

この質問が失礼に聞こえる場合は申し訳ありません。このトピックについてオンラインには何もないので、回答していただきありがとうございます。

答え1

みんなで手に入れました。https://superuser.com/a/916248/151431

あなたはそれを使用することができますperl

$ perl -00pe 's/^/$./' file
  • -00「行」が連続した \n\n として定義される段落モードをオンにします。
  • -pによって提供されたスクリプトを実行した後、入力ファイルの各行を印刷するようにPerlに指示します-e
  • s/^/$./(^)行の先頭を現在の「行」(段落)番号に置き換えます。$.

あなたはそれを使用することができますawk

$ awk -v RS='\n\n' -vORS='\n\n' '{print NR$0}' file | head -n -2 
  • -v RS='\n\n'awkのレコード区切り文字を連続した改行文字に設定します。 Perlの短絡モードと同様に、これは段落を「行」として扱います。次に、現在の行番号(NR)と現在の「行」を印刷するように指示します$0
  • -vORS=出力レコード区切り文字を連続した改行文字に設定して、出力でも段落を空白行で区切るようにします。
  • head -n -2出力の末尾に2つの空行を追加するのを防ぎます。

関連情報