Regular-Expression

從文件的每一行中提取字元串

  • August 1, 2021

我有一個文件,其中每一行都包含一個句子,其中在字元 > 和 < 之間找到一個單詞。例如:

Martin went shopping at &gt;Wallmart&lt; and lost his wallet
French food &gt;tastes&lt; great

我正在尋找一個從 shell 執行的命令,該命令將為每一行列印“>”和“<”中的單詞。

提前致謝。

對於awk

awk -F '[&gt;&lt;]' '{print $2}' file

這會將欄位分隔符設置為&gt;or&lt;並列印第二個欄位,該欄位位於這兩個字元之間。

對於sed

sed 's|.*&gt;\(.*\)&lt;.*|\1|' file

它使用 () 來列印介於&gt;它和它之後的&lt;任何東西和它之前的任何東西之間的東西。

輸出

Wallmart
tastes

怎麼樣grep

grep -oP "(?&lt;=\&gt;).*(?=&lt;)"  file

輸出:

Wallmart
tastes

編輯:

遵循@Toby Speight 評論,並假設 > 和 < 之間只有單詞,以避免在其他上下文中匹配 > 和 < 命令應該是

grep -oP "(?&lt;=\&gt;)\w+(?=&lt;)"  file

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