如何设置我的正则表达式只返回一行?

时间:2014-03-24 15:34:21

标签: regex bash grep

我的输入信息可以是:“abc1-abc-ab-0 / 1/2”或“abc1-abc-0/1/2”。我需要一个帮助来将我的返回变量放在一行中。在我的正则表达式代码中,我得到两行maches。任何人都可以帮助我吗?

[root@server]# 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

3 个答案:

答案 0 :(得分:2)

换行符归于grep -o。我会通过| tr '\n' ' '

来管道

答案 1 :(得分:1)

可能需要这个正则表达式

 #  ^(([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)

答案 2 :(得分:0)

在一行收集命令输出的两种方法:

echo $( command )

command | xargs echo