我有一个文本文件,其中包含用双引号引起来的URL列表:
"http://test.com/secure/test/12345/doc.pdf"
因此,我试图将URL附加到文件协议中,并且还要删除URL末尾的文件名。 预期输出为:
"file://12345"
在Mac上,我已经尝试过
sed -i '.bak' 's~http://test.com/secure/test/~file://~g' url.txt
上面的命令仅附加在前面,
"file://12345/doc.pdf"
我不太确定如何匹配第一个"http://test.com/secure/test/
,然后如何匹配URL /doc.pdf"
中的下一个正斜杠,以删除文件名(不同)。
答案 0 :(得分:2)
在确认文件适合您之后,您可以修改以下sed
命令来修改文件:
echo '"http://test.com/secure/test/12345/doc.pdf"' | sed -E 's@"http://test.com/secure/test/([^/"]*)/.*"@"file://\1"@'
"file://12345"
说明:
([^/"]+)
将捕获URL的12345
部分(您可能不得不限制为使用更具体的类[0-9a-zA-Z]
而不是[^/"]
/.*"
将与/
和URL的其余部分匹配答案 1 :(得分:1)
尝试一下:
awk -F/ '{print "\"file://" $(NF-1)"\"" }' urlfile.txt
说明
-F/ # fieldseperator is /
'{print "\"file://" # print fix part
$(NF-1)"\"" }' # print penultimate field