텍스트 파일에서 특정 패턴을 제거해야 합니다.
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