我的目录中包含许多带有特殊字符和空格的文件。我想对所有这些文件执行操作,因此我试图将所有文件名存储在中list.txt,然后使用此列表运行命令。
我列表中的特殊字符是& []'。
因此,基本上我想用sed有\问题的字符替换每个事件。
例如:filename .txt=> filename\ .txt等...
问题是我在处理撇号时遇到麻烦。
到目前为止,这是我的命令:
ls | sed 's/\ /\\ /g' | sed 's/\&/\\&/g' | sed "s/\'/\\'/g" | sed 's/\[/\\[/g' | sed 's/\]/\\]/g'
起初,我认为字符串命令中的撇号与字符串周围的撇号冲突。因此,我改为使用双引号,但仍然无法正常工作。
我已经尝试了所有这些,但没有任何效果:
sed "s/'/\'/g" (转义撇号)
sed "s/'/'/g" (不转义)
sed "s/'/\'/g" (转义反斜杠)
sed 's/"'"/"'"/g' (双引号单引号)
作为免责声明,我必须说,我是新手sed。我sed今天才执行我的第一条命令,所以也许我正在做一些我没有意识到的错误。
这可以做到:
cat file
avbadf
test&rr
more [ yes
this ]
and'df
sed -r 's/(\x27|&|\[|\])/\\\1/g' file
avbadf
test\&rr
more \[ yes
this \]
and\'df
\x27 等于单引号 ' \x22 等于双引号 "
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。