텍스트 파일에서 특정 패턴 제거

텍스트 파일에서 특정 패턴 제거

텍스트 파일에서 특정 패턴을 제거해야 합니다.

check this (2005)
right now (2003)

이를 달성하기 위해 sed를 사용해 보았지만 오류가 발생했습니다.

sed 's/\s(.*)//d' file.txt

파일에서 다음 패턴을 제거하고 싶습니다.

 (2005)
 (2003)

대괄호 앞의 공백 문자도 제거해야 합니다.

답변1

다음을 수행할 수 있습니다.

sed 's| (....)||g' file.txt

이렇게 하면 대괄호 안의 문자 4개( .각 문자당 하나씩)가 제거됩니다. 또한 대괄호 앞의 공백도 제거됩니다.

대괄호 사이에 여러 문자가 있으면 glob을 사용할 수 있습니다.

sed 's| (.*)||g' file.txt

요구 사항을 충족하는지 확인한 후 i파일을 추가하여 그 자리에서 편집하세요.

sed -i 's| (....)||g' file.txt

sed -i 's| (.*)||g' file.txt

답변2

대체 명령에는 플래그 s가 없습니다 d.

d하지만 (삭제) 명령이 있습니다 :

sed '/ (.*)$/d' file.txt

이렇게 하면 줄 끝 부분에 공백이 뒤에 오는 대괄호로 묶인 문자열이 포함된 입력에서 모든 줄이 제거됩니다(원하는 작업이 아님).

대신, 플래그를 제거하고 일반적인 대체를 수행하십시오.

sed 's/ (.*)$//' file.txt

삭제를 4자리 대괄호로만 제한하려면 다음을 수행하세요.

sed 's/ ([0-9]\{4\})$//' file.txt

관련 정보