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