采取以下文件......
ABCD,1234,http://example.com/mpe.exthttp://example/xyz.ext
EFGH,5678,http://example.com/wer.exthttp://example/ljn.ext
请注意,“ext”是整个文件中的常量文件扩展名。
我正在寻找一个表达式来将该文件变成这样的......
ABCD,1234,http://example.com/mpe.ext
ABCD,1234,http://example/xyz.ext
EFGH,5678,http://example.com/wer.ext
EFGH,5678,http://example/ljn.ext
简而言之,我需要将所有内容捕获到网址中。然后我需要捕获每个URL并将它们放在自己的行上,并使用前导捕获。
我正在使用sed这样做,我无法弄清楚如何让它正常工作。有什么想法吗?
答案 0 :(得分:5)
如果每行中的URL数量保证为2,您可以使用:
sed -r "s/([A-Z0-9,]{10})(.+\.ext)(.+\.ext)/\1\2\n\1\3/" < input
答案 1 :(得分:1)
这不要求前两个字段是特定宽度或限制逗号之间的(非逗号)字符集。相反,它键入了逗号本身。
sed 's/\(\([^,]*,\)\{2\}\)\(.*\.ext\)\(http:.*\)/\1\3\n\1\4/' inputfile.txt
您可以更改“2”以匹配任意数量的逗号分隔字段。
答案 2 :(得分:0)
目前我还没有可用的。
岂不
sed -r 's/(....),(....),(.*\.ext)(http.*\.ext)/\1,\2,\3\n\1,\2,\4/g'
诀窍?
修改:删除了延迟量词