簡體   English   中英

正則表達式匹配bash中的字符串

[英]Regex match strings in bash

我很好奇您是否可以讓正則表達式將字符串的第二個字符與后面的2匹配? 對於第一個也是最后一個,它非常容易和直接,但是我很好奇它是否可以在任何str長度上完成? 在過去的一個小時中,我一直在用bash玩游戲,但我的解決方案都無法正常工作。

^(.).*\\1$多數民眾贊成在正則表達式我為第一個和最后一個字符,它可能也需要對此進行一點編輯,但我不知道如何。

你能幫我另一個嗎?

examples:
abcsba - match as b(index 1) == b(index -2)
regex - match as e(index 1) == a(index -2)
abba - match 
unix - not matcha as indexOf(n) != indexOf(i)
linux - not match as indexOf(i) != indexOf(u)

只需從頭到尾丟棄相等數量的字符即可:

$ pat='^.(.).*\1.$'
$ [[ abcsba =~ $pat ]] && echo yes || echo no
yes
$ [[ unix =~ $pat ]] && echo yes || echo no
no

或者,通常使用{n} (例如,將第3個字符與末尾的第3個字符匹配):

pat='^.{2}(.).*\1.{2}$'
$ [[ abcdef =~ $pat ]] && echo yes || echo no
no
$ [[ abccef =~ $pat ]] && echo yes || echo no
yes

在第二個示例中,我們使用在POSIX中定義的單字符-ERE 復制運算符{m,n}來表示基本正則表達式和擴展正則表達式(不過,ERE變體僅在此處相關,因為bash =~運算符使用ERE)。 {n}形式是一種特殊情況,等於{n,n} ,表示正好重復前一個字符(或組) n次。

據我了解,您想提取字符。 你可以通過awk命令來做到

回聲“ praveen” | awk'{print substr($ 1,1,2)}'pr 01HW497089:tmp控制器$

我在這里從字符1到字符3提取column1的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM