模式我有這樣提取使用sed命令
"112344 1234234 guest 25 % allocation used"
我想用SED提取25
出這一串一串的。
在給定的行「112344 1234234客戶使用25%的分配」中,我只對「25%」感興趣。第一個字段可以是空的也,是這樣的:
,而是「用%分配」固定字符串「用25%的分配」。 所以正則表達式應該基於這個固定模式。
任何人都可以請幫助我。
模式我有這樣提取使用sed命令
"112344 1234234 guest 25 % allocation used"
我想用SED提取25
出這一串一串的。
在給定的行「112344 1234234客戶使用25%的分配」中,我只對「25%」感興趣。第一個字段可以是空的也,是這樣的:
,而是「用%分配」固定字符串「用25%的分配」。 所以正則表達式應該基於這個固定模式。
任何人都可以請幫助我。
試試這個
cut -d% -f1 | awk '{ print $(NF) }'
基本上,你想要的是從右邊第四個字段。爲了得到這個,我會使用awk
:
awk '{ print $(NF-3) }'
如果絕對必須在sed
,試試這個:
sed -e 's/^/ /' -e 's/\(^|.* \)\(.*\) % allocation used/\1/'
它不提取25%。而是打印整條生產線。 – Fayaz
@Fayaz我使用了'\ <'元字符,它是GNU sed中的一個擴展。我修改過它以適用於任何POSIX兼容的sed。 –
@Fayaz你可能想更新你的問題。它聲明'我想從sed中提取25個字符串。'如果你還需要'%',也可以使用這個 - 'sed -e's /.* \ <\(。* \)allocation used/\ 1 /' –
如果您確信該'%'之前的數字是2位數,那麼您可以使用以下內容
[jaypal~/Temp]$ cat text5
112344 1234234 guest 25 % allocation used
25 % allocation used
2344 guest 15 % allocation used
[jaypal~/Temp]$ sed 's/.*\(.. %\).*/\1/' text5
25 %
25 %
15 %
很難想出僅基於單個樣本輸入提取某些東西的正則表達式模式。哪些部分有所不同以什麼方式? (當然,這正是編寫正則表達式的本質。) – sarnold
這是非常不確定的。你總是想要第四場?第一個兩位數字? –
請說明您是希望'25'提取還是'25%'。 –