我的輸入信息可以是:「abc1-abc-ab-0/1/2」或「abc1-abc-0/1/2」。我需要一個幫助來獲得我的返回變量在一行。在我的正則表達式代碼中,我得到了兩行maches。誰能幫我?如何設置我的正則表達式只返回一行?
[[email protected]]# echo "abc1-abc-ab-0/3/7" | grep -oP '^(([a-zA-Z0-1]){4})-(([a-zA-Z]){3})|-(([a-zA-Z]){2})'
abc1-abc
-ab
我的輸入信息可以是:「abc1-abc-ab-0/1/2」或「abc1-abc-0/1/2」。我需要一個幫助來獲得我的返回變量在一行。在我的正則表達式代碼中,我得到了兩行maches。誰能幫我?如何設置我的正則表達式只返回一行?
[[email protected]]# echo "abc1-abc-ab-0/3/7" | grep -oP '^(([a-zA-Z0-1]){4})-(([a-zA-Z]){3})|-(([a-zA-Z]){2})'
abc1-abc
-ab
兩種方式在一行收集命令的輸出:
echo $(command)
command | xargs echo
可能需要這個表達式
# ^(([a-zA-Z0-1]){4})-(([a-zA-Z]){3})(-(([a-zA-Z]){2}))?
^
( # (1 start)
([a-zA-Z0-1]){4} # (2)
) # (1 end)
-
( # (3 start)
([a-zA-Z]){3} # (4)
) # (3 end)
( # (5 start)
-
( # (6 start)
([a-zA-Z]){2} # (7)
) # (6 end)
)? # (5 end)
+1表示在重新構造正則表達式時,OP的多線問題消失。把它放在一起:'echo「abc1-abc-ab-0/3/7」| (([a-zA-Z0-1]){4}) - (([a-zA-Z]){3})( - ( }))?「'。 – mklement0
換行符是由於grep -o
。我會通過| tr '\n' ' '
你想要什麼輸出? – anubhava
你在3和2個char塊之間的正則表達式中有一個管道字符。你想要那個嗎? – deanosaur
在用戶「Trygve Flathen」幫助下的最終解決方案是: '[root @ server]#echo「abc1-abc-ab-0/3/7」| ((a-zA-Z0-1]){4}) - (([a-zA-Z]){3})| - (([a-zA-Z]){2 })'| xargs回聲| tr -d'' abc1-abc-ab' 謝謝大家! – rodolfo