Text

如何給段落編號

  • June 20, 2016

我知道我已經問過這個問題,但我沒有得到有效的答案。那麼請問有人可以回答我的問題嗎?

我有一個文本文件,其中包含文本段落,每個段落由一個空行分隔。現在我需要用自己的編號為每個段落編號。所以第一段的邊距有數字 1,第二段的邊距有數字 2,第三段的邊距有數字 3,依此類推。我知道這似乎很明顯,但我認為我的最後一篇文章可能沒有清楚地傳達資訊。

所以我需要一個可以完成這項工作的 Linux 命令。但是,我的問題是命令需要簡單。我的意思是沒有復雜的 Perl 腳本或任何難以理解的程式碼塊。

我正在尋找的是一個可以輕鬆執行任務的簡單命令。或者,如果需要編寫腳本,請將其簡化並解釋程式碼,以便從未使用過 Perl 或 Bash 腳本的人仍然可以將其應用於他們的程式碼並理解他們在做什麼。

對不起,如果這個問題可能會讓人覺得不禮貌。響應將不勝感激,因為網路上沒有關於此主題的任何內容。

全部來自https://superuser.com/a/916248/151431

您可以使用perl

$ perl -00pe 's/^/$./' file
  • -00打開段落模式,其中“行”由連續的 \n\n 定義。
  • -p``-e告訴 perl 在執行on 它給出的腳本後列印輸入文件的每一行。
  • 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以避免在輸出末尾添加兩個空行。

引用自:https://unix.stackexchange.com/questions/265779