Regular-Expression

如何在較少的手冊頁搜尋中指示行首?

  • January 24, 2018

我經常提到 man bash 來回憶“歷史擴展”部分(事件/單詞/修飾符)的使用。我知道我需要的男人部分是“歷史擴展”。所以我輸入HISTORY EXPANSION前向搜尋列表’/’。當然 less 跳轉到“HISTORY EXPANSION”部分並不直接,而是顯示該字元串在給定人中的所有出現。因此,我認為輸入以下內容會很棒:

/^HISTORY EXPANSION

所以我可以跳到“行首”歷史擴展。

既不/^HISTORY EXPANSION也不/\^HISTORY EXPANSION工作

在更少的人中,我看到…

/pattern

在文件中向前搜尋包含該模式的第 N 行。N 預設為 1。模式是正則表達式,由系統提供的正則表達式庫辨識。

我看到其他人也在研究這個問題,但目的不同: https ://stackoverflow.com/questions/14698364/what-is-the-regular-expression-library-supplied-by-my-system

我按照這些步驟操作,但仍然不能確定我的機器上使用了哪個正則表達式版本。這是較少二進製文件的共享庫依賴項輸出

$ ldd /usr/bin/less
linux-vdso.so.1 =>  (0x00007ffc229cb000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f44968e9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4496524000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4496b12000)

那麼,如何在較少的搜尋中指示行首,以便我可以輕鬆跳轉到我需要的 man 部分?

經過嘗試和實驗,似乎 man 實際上用空格縮進了行。這就是我能找到
/^HISTORY EXPANSION
並失敗的原因
/^The history library(這是歷史擴展部分的第一句話)。這是正確的模式:

/^[[:space:]]{7}The history library...

正如我們所見, man/less 只需在不是節標題的每一行前面添加 7 個“空格”(ascii dec 程式碼 32)(粗體,正如我看到其他人所說的那樣)。我不能確定這是否適用於所有 Linux 發行版/man 二進製文件,但到目前為止我測試的所有內容都是如此。總結一下,以便在 man find 使用中找到(從第一次搜尋)’-atime’ 選項的描述

/^[[:space:]]{7}-atime

當 man 的輸出通過 more 時,每個粗體字元實際上就是那個字元,然後是一個退格,然後是重複該字元,然後是下一個字元。要查找粗體字,請搜尋 /^H..I..S..T

您也可以在 Stéphane 指出的文章中找到它。

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