grep -Eri "drucken" app/views
app/views/meths/_form.html.erb: <li class="hidden-phone"><a onclick="javascript: print();" class="">Methode drucken</a></li>
app/views/clients/show.html.erb: <li><a onclick="javascript: print();" class="" value="drucken">drucken</a></li>
app/views/clients/index.mobile.html.erb: <li class="hidden-xs"><a onclick="javascript: print();" class="">KlientInnen drucken</a></li>
app/views/treatments/index.html.erb: <li><a onclick="javascript: print();" class="" value="drucken">drucken</a></li>
我正在寻找一个解决方案,我可以做类似的事情:
grep -Eri "drucken" app/views | xargs INTO_A_FANCY_TOOL_WHICH_REMOVES_THOSES LINES
更新:
我想从文件中删除这些行。
答案1
你有没有尝试过类似的事情:
grep -Eri -l "drucken" app/views | xargs sed -e '/drucken/d' -i
其中“-l”告诉 grep 仅打印文件名,“-i”告诉 sed 动态修改该文件。
或者,您可以使用 sed 循环遍历所有文件,但即使文件不包含请求的单词,它也会“触及”所有文件:
find app/views -type f -exec sed -e '/drucken/d' -i {} \;
答案2
在我看来,您正在寻找grep -v
?
-v, --invert-match Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX.)
所以grep -v 'drucken' file1 > file2
会给你一个file2
删除了这些行的。
或者,未经尝试,类似的东西
sed -e '/drucken/d' infile > outfile
答案3
你可以使用 perl oneliner 来实现:
$ cat file
a
b
c
$ perl -i -wne 'if(/b/){print STDOUT $_}else{print}' file
b
$ cat file
a
c