我有一个很长的 txt 文件,如下所示:
notes = "asdfasasfs";
name = "Bob Field";
time = "08:00";
address = "123 Apple Road";
phone = "555-1234";
zip = "33456";
date = "2021-03-29 23:00:00 +0000";
对于不同的人来说,这一过程要重复数千次。
我想列出time
并zip
并排显示它们,就像
time = "08:00" ... zip = "33456"
time = "10:00" ... zip = "11123"
time = "13:00" ... zip = "43567"
time = "17:00" ... zip = "37754"
我已经尝试过这个正则表达式
.*(time.*\".*\";).*(zip.*\".*\";).*
希望以后能用到它
$1 ... $2
但这不起作用。
有任何想法吗?
答案1
您可以使用这个正则表达式解决您的问题:
[\s\S]+?^(time .+);[\s\S]+?^(zip =.+?);[\s\S]+?$
并替换为:$1 ... $2
这适用于多种正则表达式。
答案2
如果每个集合都恰好有一个“Time”和“Zip”,那么效果很好:
$ egrep '^(time|zip)' < in | paste - - | sed -e 's/;/ .../; s/;//'
time = "08:00" ... zip = "33456"
time = "08:01" ... zip = "33457"
time = "08:02" ... zip = "33458"
time = "08:03" ... zip = "33459"
(我通过用不同的时间和 zip 值重复您的示例 3 次来模拟这样的输入)