我有以特殊字符開頭@并以 結尾的數字,900現在我想提取它們之間的文本。我的代碼:
>> cat demo.txt
asdfsdf
@ 1234900 asdf dfasd
asdf @ 1345900-asdfad wer
@ 678900-asdfa adf
>> grep -Po '@\K.*900' demo.txt
1234900
1345900
678900
預期答案:
1234
1345
678
uj5u.com熱心網友回復:
您可以使用
grep -oP '@\s*\K\d ?(?=900)'
請參閱正則運算式演示。詳情:
-o- 該選項使grep輸出所有匹配的子字串而不是發生匹配的行P- 啟用 PCRE 正則運算式引擎而不是默認的 POSIX BRE@- 一個@字符\s*- 零個或多個空格\K- 匹配重置運算子丟棄到目前為止匹配的所有文本\d ?- 一位或多位數字,盡可能少(?=900)- 直到第一個,最左邊的900字符序列出現。
請參閱在線演示:
#!/bin/bash
s='asdfsdf
@ 1234900 asdf dfasd
asdf @ 1345900-asdfad wer
@ 678900-asdfa adf '
grep -oP '@\s*\K\d ?(?=900)' <<< "$s"
輸出:
1234
1345
678
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334559.html
上一篇:正則運算式:在字串中只符號一次
