2014-06-23 4 views
0

하나의 디렉토리에 수백 개의 텍스트 파일이 있습니다. 모든 파일에 대해 HETATM으로 시작하는 모든 행을 삭제하려고합니다. 나는 csh 나 bash 코드가 필요할 것이다.특정 단어로 시작하는 여러 텍스트 파일의 줄 제거

나는 grep을 사용할 것이라고 생각하지만, 확실하지 않습니다.

답변

2

사용 sed을 :

sed -i -e '/^HETATM/d' *.txt 

이 곳에서 모든 파일을 처리 할 수 ​​있습니다.

-i은 "적절한 위치"를 의미합니다.

-e 다음 명령을 실행하는 것을 의미합니다.

/^ HETATM /은 "HETATM으로 시작하는 줄 찾기"를 의미하고, 다음은 d은 "삭제"를 의미합니다.

먼저 백업 해주세요! 그것은 (파일 $$.tmp에서) grep의 출력 임시 파일을 만드는

#!/bin/bash 

for f in *.txt 
do 
    grep -v "^HETATM" "%f" > $$.tmp && mv $$.tmp "$f" 
done 

을하고 명령 경우에만 원본 파일을 덮어 쓰기 :

당신이 정말로 grep을 함께하고 싶어, 당신이 할 수 성공적으로 실행됩니다.

+0

설명해 주셔서 감사합니다. 나는 천천히 배우고있다. – Josh

0

일치하지 않는 모든 라인을 얻을 수 grep-v 옵션을 사용하여 다음과 같은

grep -v '^HETATM' input.txt > output.txt 
관련 문제