패턴과 일치하는 줄을 찾아 삭제하는 방법은 무엇입니까? 싶습니다 HERE IT IS. 명령 줄

줄이 많은 파일에서로 시작하는 줄을 삭제하고 싶습니다 HERE IT IS.

명령 줄 도구 만 사용하여이 작업을 수행하려면 어떻게해야합니까?



답변

시도 sed:

sed -i '/^HERE IT IS/d' <file>

경고 :-i 스위치를 사용하는 경우 백업을 수행하는 것이 좋습니다 sed.

sed -i.bak '/^HERE IT IS/d' <file>

원본 파일은 그대로 유지되고 <file>.bak수정 된 파일은 그대로 유지됩니다 <file>.


답변

아주 좋은 이외에 grepsed당신이받은 답변, 여기에 같은 일을 할 수있는 다른 도구는 다음과 같습니다

  • 몇 가지 펄 방법 :

    perl -ne '/^HERE IT IS/ || print' file > newfile
    perl -ne 'print if !/^HERE IT IS/' file > newfile
    perl -ne 'print unless /^HERE IT IS/' file > newfile
    

    -i파일을 편집하기 위해 스위치를 예제에 추가 할 수 있습니다 .

    perl -i.bak -ne '/^HERE IT IS/ || print' file
    
  • (둔한 사람

    awk '!/^HERE IT IS/' file > newfile
    

    GNU awk( awkLinux 의 기본값 )의 최신 버전 (4.1.1 이상 )도 파일을 제자리에서 편집 할 수 있습니다.

    gawk -i inplace  '!/^HERE IT IS/' file
    
  • 쉘 ( bash, zsh, ksh, 아마 다른 사람). 이것은 어리석은 일이지만 수는 있지만 다른 도구가 더 좋습니다.

    while IFS= read -r line; do
      [[ $line =~ ^"HERE IT IS" ]] || printf "%s\n" "$line"
    done < file > newfile
    

답변

grep그것들을 걸러내는 데 사용 합니다. 예를 들면 다음과 같습니다.

grep -v "^HERE IT IS" infile > outfile

그런 다음 outfile을 다시 infile로 이동하십시오.


답변

sed 확실히 갈 길입니다.

@heemayl 명령을 약간 수정하면 패턴 참조의 I로 인해 동일한 사례가 패턴에 사용되는지 여부에 관계없이 줄을 삭제할 수 있습니다.

sed -i '/HERE IT IS/Id' <file>

이 작업을 수행하려는 디렉토리에 여러 파일이 있으면 찾은 파일과 결합 할 수 있습니다.

find . -maxdepth 1 -type f -exec sed -i.bak '/HERE IT IS/Id' {} +

maxdepth 옵션은 이것이 디렉토리로 재귀하지 않음을 의미합니다.


답변

다른 파이썬 옵션 :

#!/usr/bin/env python3
[print(l, end = "") for l in open(f).readlines() if not l.startswith("HERE IT IS")]

여기서 f는 따옴표 사이의 파일 경로입니다.


답변

그렙

grep -P '^(?!HERE IT IS)' file

(?!HERE IT IS)네거티브 lookahead 어설 션은 정규식 엔진 이 문자열 다음에 오는 경우에만 모든 줄 시작 경계 ( 일반적으로와 일치^ )를 일치 시킵니다.HERE IT IS

파이썬

#!/usr/bin/python3
import sys
fil = sys.argv[1]
with open(fil) as f:
    for line in f:
        if not line.startswith('HERE IT IS'):
            print(line, end="")

스크립트를 파일에 저장 한 script.py다음 터미널에서 아래 명령을 통해 실행하십시오.

python3 script.py infile

답변

Ex 모드에서 Vim을 사용할 수 있습니다 :

ex -sc 'g/^HERE IT IS/d' -cx file
  1. g 글로벌 검색

  2. d 지우다

  3. x 저장하고 닫습니다