Regular-Expression
從文件的每一行中提取字元串
我有一個文件,其中每一行都包含一個句子,其中在字元 > 和 < 之間找到一個單詞。例如:
Martin went shopping at >Wallmart< and lost his wallet French food >tastes< great
我正在尋找一個從 shell 執行的命令,該命令將為每一行列印“>”和“<”中的單詞。
提前致謝。
對於
awk
:awk -F '[><]' '{print $2}' file
這會將欄位分隔符設置為
>
or<
並列印第二個欄位,該欄位位於這兩個字元之間。對於
sed
:sed 's|.*>\(.*\)<.*|\1|' file
它使用 () 來列印介於
>
它和它之後的<
任何東西和它之前的任何東西之間的東西。輸出
Wallmart tastes
怎麼樣
grep
?grep -oP "(?<=\>).*(?=<)" file
輸出:
Wallmart tastes
編輯:
遵循@Toby Speight 評論,並假設 > 和 < 之間只有單詞,以避免在其他上下文中匹配 > 和 < 命令應該是
grep -oP "(?<=\>)\w+(?=<)" file