2011-05-15 131 views
-1

在這樣一行AWK模式匹配

21zCases-外設組合LOGITECH 176-83-LODMK250 LOGITECH 無線桌面MK250 920-002653 920-002653ΔΙΑΘΕΣΙΜΟ16,90 0,24 22,82

我試圖用/^[0-9]\{2,3\}-[0-9]\{2,3\}-*/)print $i

提取/176-83-LODMK250/但不工作。

有些建議?

謝謝。

回答

2

^開始時會嘗試在字符串的開頭找到它,而不是這種情況。此外,表達式末尾的*將匹配到字符串的末尾。

+0

您好! ^在開始時是這樣的,因爲我需要字符串開頭的數字不[a-z] – user754863 2011-05-15 22:32:32

+0

目標字符串不**開始與您所需的字符串。所以在正則表達式中有^是永遠不會匹配的。嘗試從表達式中移除^符號,您將看到一個匹配項。 – 2011-05-15 22:45:45

+0

是的,但我想只用數字開始而不是[az] .thank you – user754863 2011-05-15 23:48:41

1

正如d-live所述,您需要刪除^。 ^匹配「整個字符串的開始」(即在你的例子中的「21zCases」之前),而不是「匹配的字符串的開始」。

我相信這是你在找什麼:

/[0-9]{2,3}-[0-9]{2,3}-[^[:space:]]*/ 
0

下面的正則表達式的作品,

echo "21zCases-Peripherals Combo LOGITECH 176-83-LODMK250 LOGITECH WIRELESS DESKTOP MK250 920-002653 920-002653 ΔΙΑΘΕΣΙΜΟ 16,90 0,24 22,82" | grep -i "[0-9]\{2,3\}-[0-9]\{2,3\}-.*"