使用regex在a之前和之后的文件中搜索字符串模式

时间:2019-05-02 13:24:30

标签: regex unix grep

我的日志文件很大,我想从该文件中获取某些信息。 我正在尝试使用grep和regex提取数据,但是我什么也没得到。

单行的格式为:

000.00.000.00,000,xxx,xxx.xxx.xxx,xxx

零=数字,x =字符

但是我想要第二个','之后和最后一个','之前的一切

我一直在尝试

grep [[a-zA-Z].\.[a-zA-Z].\.[a-zA-Z]]

各种各样,但我没有设法得到它

我希望得到:

','xxx.xxx.xxx','

但没有,

3 个答案:

答案 0 :(得分:2)

使用Perl:

perl -ape 's/^.+?[a-z]+,([^,]+).*$/$1/i' file

输出:

xxx.xxx.xxx

说明:

s/              # substitute
  ^             # beginning of line
  .+?           # 1 or more any character but newline, not greedy
  [a-z]+        # 1 or more letters
  ,             # a comma
  ([^,]+)       # group 1, 1 or more non comma
  .*            # 0 or more any character but newline
  $             # end of line
/               # replace with
  $1            # content of group 1
/i              # case insensitive

答案 1 :(得分:1)

如果您对sed表示满意,请根据您的描述尝试遵循。

sed 's/\([^,]*\),\([^,]*\),\([^,].*\)\(.*\)/'"'"','"'"'\3'"'"','"'"'/'  Input_file

在这里,我正在使用sed的功能来将匹配的正则表达式值保存到内存中,以便我们在替换期间使用。

答案 2 :(得分:0)

使用python:

    import re
    str = "000.00.000.00,000,xxx,xxx.xxx.xxx,xxx"
    matched = re.findall('.*([a-zA-Z]{3}\.[a-zA-Z]{3}\.[a-zA-Z]{3}),[a-zA-Z]{3}$',str)
    print(matched)