这是我的命令(故意中断):
grep FOO "/Users/gjtorikian/blah" -l | xargs sed -i '' '/FOO/{s/FOO/BAR/g; w /dev/stdout
}'
Run Code Online (Sandbox Code Playgroud)
在高层:grep
用于blah
目录中的FOO ;管道中的文件名(因为-l
)到sed
; sed
执行内联替换 ( -i ''
) 并仅将更改的项打印到/dev/stdout
。
如果我要省略-l
和管道,我会从grep
:
/Users/gjtorikian/blah/baz.cs:1:FOO
/Users/gjtorikian/blah/bar.js:1:FOO
Run Code Online (Sandbox Code Playgroud)
我想要的是sed
执行内联替换,然后显示我替换的文件和术语;例如:
/Users/gjtorikian/blah/baz.cs:1:BAR
/Users/gjtorikian/blah/bar.js:1:BAR
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?如果重要,我宁愿只保留它grep
/ sed
。我必须做第二次grep
以后sed
?