我的日志文件很大,我想从该文件中获取某些信息。 我正在尝试使用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','
但没有,
。
答案 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)