여러 파일에서 패턴을 제거하는 방법

여러 파일에서 패턴을 제거하는 방법

다음과 같은 정보가 포함된 데이터 파일이 있습니다.

977.txt:[email protected]
977.txt:[email protected]
980.txt:[email protected]
982.txt:[email protected]
985.txt:[email protected]
987.txt:[email protected]
987.txt:[email protected]
991.txt:[email protected]
991.txt:[email protected]
991.txt:[email protected]
994.txt:[email protected]
995.txt:[email protected]
999.txt:[email protected]

이전에 모든 것을 삭제하고 싶습니다: 디렉토리의 모든 파일에 대해 이를 수행하는 방법(Linux).

나는 이것을 시도했고 작동하지만 여러 파일에 사용할 수 없습니다.

grep -o - '[[:alnum:]+\._\-]*@[[:alnum:]+\._\-]*' file.txt

답변1

또 다른 sed솔루션.

$ sed -n 's/[^:]*\://p' infile
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
$

-i디렉터리 트리에서 파일을 내부 편집 및 재귀적으로 편집하기 위해 해당 옵션을 사용하도록 쉽게 확장할 수 있습니다.find

답변2

단일 디렉토리에 있는 모든 파일의 앞 부분을 제거하려면 다음을 수행하십시오.

sed -i -r 's/^[0-9]+\.txt://' *

먼저 파일의 복사본 몇 개를 테스트해 보세요.

답변3

관련된 파일 수나 디렉터리 깊이에 따라 일부 오류가 발생할 수 있지만 파일 수가 적은 경우에는 정상적으로 작동합니다.

 printf '%s\n' 'g/^.*:\(.*\)/s//\1/' w q | ed -s *

관련 정보