jel*_*ola 12 unix macos shell grep sed
Unix(和SO)新手在这里试图弯曲我的新生命令行剁.
我正在尝试使用grep和sed扫描当前目录中的一堆文件,并将所有出现的字符串"192.168.1.1"替换为字符串"192.168.1.0",同时单独保留.git文件夹.
我尝试了以下方法:
grep -lr --exclude-dir=".git" "192.168.1.1" . | xargs sed -i 's/192.168.1.1/192.168.1.0/g'
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
sed: 1: "./contact.html": invalid command code .
Run Code Online (Sandbox Code Playgroud)
如果有人能帮我弄清楚我的命令有什么问题,我真的很感激.
我也有兴趣了解一种更有效的方法来完成这项任务,特别是如果命令更简洁,更容易记住,只要它不涉及在perl/bash/etc中编写脚本,但我'我目前正试图深入研究sed和grep,我仍然有兴趣了解为什么这个命令不能正常工作,即使提供了一个工作替代方案.
anu*_*ava 23
将您的sed命令更改为:
xargs sed -i.bak 's/192\.168\.1\.1/192\.168\.1\.0/g'
Run Code Online (Sandbox Code Playgroud)
OSX上的sed需要带有-i选项的有效文件扩展名.