Linux
使用 GNU sed 提取可能由空行分隔的兩個模式行之間的標題名稱
我有以下文件:
------ Introduction ---------- Optio eum enim ut. Et quia molestias eos. Doloribus laborum quia quae. Magnam cupiditate quis consectetur. ----- Chapter1: Foo ----- Odit beatae eius voluptas temporibus sint quia. Eos et tempora similique laboriosam optio consequatur quibusdam. Fugit suscipit cupiditate ea perspiciatis rem labore cum eos. ----- Chapter bar ----- Et consequatur quia quia et architecto et sunt. Perferendis qui deserunt qui est illo est sapiente ipsam. Fugiat vel amet magni in quam. Eligendi totam cum sapiente harum blanditiis minima
具有以下約束:
- 標題符號
-
至少出現 5 個字元或更多。-
和標題之間可能有任意(但有限)數量的空行。預期的輸出是:
Introduction Chapter1: Foo Chapter bar
我知道這可以使用來完成,
awk
但請不要建議這樣做。我希望看到一個純 GNU sed 解決方案。這是我到目前為止所嘗試的:
sed -n ':a; /-\+/{n; /^$/!{p; b a}}' input.txt
但是該命令似乎不起作用。
這將列印至少包含一個字母或數字字元的行,只要它們位於標題內。
sed -n '/^-----/,/^-----/{/[[:alnum:]]/p;}' file
我提出這個解決方案:
$ sed -n '/\-\{5,\}/,/\-\{5,\}/p' file | sed '/\-\+\|^$/d' Introduction Chapter1: Foo Chapter bar
'/\-\{5,\}/,/\-\{5,\}/p'
選擇-
(至少 5 個)之間的部分。'/\-\+\|^$/d'
刪除空行或以 . 開頭的行-
。