我需要一些关于这种格式的正则表达式的帮助:
字符串的第一部分是电子邮件地址,后面是八列除以";"
。
a.test@test.com;Alex;Test;Alex A.Test;Alex;12;34;56;78
我的第一部分是(.*@.*com
)
这些也是可能的源字符串:
a.test@test.com;Alex;;Alex A.Test;;12;34;56;78
a.test@test.com;Alex;;Alex A.Test;Alex;;34;;78
a.test@test.com;Alex;Test;;Alex;12;34;56; and so on
答案 0 :(得分:1)
你可以试试这个正则表达式:
^(.*@.*com)(([^";\n]*|"[^"\n]*");){8}(([^";\n]*|"[^"\n]*"))$
如果您在地址后更改了{
和}
之间的数字
这里的数据是捕获:
1. `a.test@test.com`
2. `56;`
3. `56`
4. `78`
如果你确定字符串中没有"
,你可以使用它:
^(.*@.*com)(([^;\n]*);){8}([^;\n]*)$
修改强>
OP提出了这种用法:sed
的第一个正则表达式,您需要-i -n -E
个标记并转义"
个字符。sed -i -n -E "/(.*@.*com)(([^\";\n]*|\"[^\"\n]*\");){8}(([^\";\n]*|\"[^\"\n]*\"))/p"
答案 1 :(得分:0)
你可以拥有像
这样的东西".*@.*\.com;[A-Z,a-z]*;[A-Z,a-z]*;[A-Z,a-z, ,.,]*;[A-Z,a-z]*;[0-9][0-9];[0-9][0-9];[0-9][0-9];[0-9][0-9]"
假设数字只有两位数
答案 2 :(得分:0)
使用awk可以轻松完成:
awk -F ';' '$1 ~ /\.com$/{print NF}' file
9
9
9
cat file
a.test@test.com;Alex;;Alex A.Test;;12;34;56;78
a.test@test.com;Alex;;Alex A.Test;Alex;;34;;78
a.test@test.com;Alex;Test;;Alex;12;34;56; and so on