Linux下如何提取并格式化批量md5sum文件的内容?
解决方案
直接用sed处理所有MD5文件即可,不需要xargs,核心是避开替换分隔符与路径中/的冲突,同时不要使用-i参数(你需要的是输出处理后的内容,而非修改原文件):
sed 's#/home/develop/md5sums/##g' *.md5
如果坚持用管道+cat的写法,也可以这样写:
cat *.md5 | sed 's#/home/develop/md5sums/##g'
你的命令报错原因解析
第一个命令的问题:
xargs -0用于处理以null字符分隔的输入,这里完全没必要,反而会让sed接收错误的输入格式。- 替换表达式用
/作为分隔符时,路径里的/会被误判成分隔符,导致sed语法混乱,触发"extra characters at the end of d command"错误。换成#这类不包含在路径中的字符作为分隔符就能解决。
第二个命令的问题:
sed -i是原地修改文件的参数,当你通过管道给sed传递标准输入(stdin)时,sed没有具体文件可修改,因此会报"-I or -i may not be used with stdin"错误。去掉-i,让sed直接输出处理后的内容即可。
内容的提问来源于stack exchange,提问作者Ben Holness
相关产品推荐
相关产品推荐

