Con*_*lor 2 bash grep sed bash-scripting
我认为这很容易,但我忽略了一些简单的事情:
我有一个名为test. 例如,它包含字符串Alfred Hitchcock。我想用Alfred\ Hitchcock.
我想这会做到:
grep -r1 ' ' /path/to/test | xargs sed -i 's/ /\ /g'
Run Code Online (Sandbox Code Playgroud)
但它告诉我:
sed: can't read Alfred: No such file or directory
sed: can't read Hitchcock: No such file or directory
Run Code Online (Sandbox Code Playgroud)
不太确定发生了什么。任何帮助都会很棒,谢谢。
你根本不需要grep:
sed -i 's/ /\ /g' /path/to/test
Run Code Online (Sandbox Code Playgroud)
这将转义文件中的所有空格。要仅在某些字符串上转义,请参阅 Guru 的回答。
现在,如果要对给定目录中包含空格字符的所有文件执行此操作:
grep -rl ' ' /path/to/test/dir | xargs sed -i 's/ /\ /g'
Run Code Online (Sandbox Code Playgroud)
现在我意识到,这与您的命令行相同,除了 之后的字符-r,它应该是小写的L。
(注意:我假设正在使用 GNU 工具。)
| 归档时间: |
|
| 查看次数: |
24764 次 |
| 最近记录: |