我目前有一堆带有md5sum哈希值的.md5sum文件,它的相应文件名带有完整的绝对路径。我想将这些文件从绝对路径修改为相对文件。我想我已经非常接近了。
> cat example.md5sum
197f76c53d2918764cfa6463b7221dec /example/path/to/file/example.null
> cat example.md5sum | sed 's/( ).*\// \.\//'
197f76c53d2918764cfa6463b7221dec /example/path/to/file/example.null
将正则表达式( ).*\/
扔进记事本++会返回/example/path/to/file/
这就是我想要的。将其移至sed
不会产生相同的匹配。
如前所述,最终目标如下:
197f76c53d2918764cfa6463b7221dec ./example.null
答案 0 :(得分:2)
看起来像是sed的工作。
sed -i.bak 's:/.*/:./:' file ...
-i
选项告诉sed修改文件"就地"而不是将结果发送到stdout。使用s
ubstitute命令,您可以使用备用分隔符 - 在这种情况下,我使用了冒号,因为您匹配并用作替换的文本包括斜杠。使事情更容易阅读。
我还没有打算在路径之前匹配空白,因为在md5sum文件中有一个非常可预测的格式。
在试验前备份输入文件。
请注意,这与shell无关 - 您可以在tcsh或bash或其他任何能够使用选项启动sed的地方运行它。