특정 단어 뒤의 공백을 모두 제거하세요.

특정 단어 뒤의 공백을 모두 제거하세요.

특정 단어 뒤의 모든 공백을 제거하기 위해 정규식을 사용하려고 합니다. 내가 사용하는 편집기는 Notepad++이지만 Unix도 사용할 수 있습니다.

이 경우 정규식 \VALUES를 실행하여 VALUES를 강조 표시할 수 있지만 그 이후의 공백을 제거하는 방법을 잘 모르겠습니다.

답변1

사용 sed:

$ sed 's/VALUES[[:blank:]]*/VALUES/g' input >output

이렇게 하면 VALUES뒤에 오는 공백 문자(공백 또는 탭)가 원하는 만큼 대체 됩니다 VALUES. 즉, 공백이 제거됩니다.

VALUES완전한 단어로 일치시키는 것이 중요한 경우 , whateverVALUES아니요일치시킨 다음 앞에 단어 경계 패턴(의 시작)을 삽입합니다 VALUES.

$ sed 's/[[:<:]]VALUES[[:blank:]]*/VALUES/g' input >output

이 답변의 나머지 부분에서 이를 유지하겠습니다.

더 복잡한 값의 경우 VALUES값을 두 번 입력할 필요가 없는 것이 편리할 수 있습니다.

$ sed 's/\(VALUES\)[[:blank:]]*/\1/g' input >output

이렇게 하면 VALUES패턴이 저장되고 교체 시 재사용됩니다.

패턴이 VALUES쉘 변수에 저장된 경우 $values:

$ sed "s/\($values\)[[:blank:]]*/\1/g" input >output

이는 거의 Vim 편집기로 직접 전송됩니다.

:%s/\(VALUES\)[[:blank:]]*/\1/

저는 Notepad++를 사용해본 적이 없기 때문에 어떻게 사용하는지 짐작만 할 뿐입니다. 분명히 Ctrl+를 누르고 H검색/찾기 및 패턴 바꾸기를 입력 할 수 있어야 합니다 .

검색 모드가능한(VALUES)[[:blank:]]*패턴을 교체할 때가능한$1. 이것을 테스트할 방법이 없습니다. 죄송합니다. 그래도 작동하지 않으면 를 [[:blank:]]사용해 보세요 [\t ].

답변2

\s*(GNU) 또는 [[:space:]]*(이식 가능)을 사용하여 탭(및 기타 모든 가로 및 세로 간격 문자)과 공백을 캡처 할 수 있습니다 .

$ cat file
stuff and VALUES    <--tab
more VALUES   <--three spaces
VALUES      <--tab, three spaces, tab

$ sed 's/VALUES\s*/VALUES/' file
stuff and VALUES<--tab
more VALUES<--three spaces
VALUES<--tab, three spaces, tab

답변3

사용 sed:

sed -e 's/VALUES \+/VALUES/'

+다음 공백을 모두 일치시키는 데 사용됩니다 .VALUES

답변4

Notepad++에서 찾기 및 바꾸기 창을 불러옵니다.

찾기 상자에 다음을 입력합니다. (VALUES)\s*(이것은 "VALUES" 뒤에 임의의 공백이 오는 것과 일치합니다.) 바꾸기 상자에 다음을 입력합니다. \1(이렇게 하면 첫 번째 그룹이 대괄호 안에 삽입됩니다 ().)

정규식이 활성화되어 있는지 확인하세요

"VALUES[일부 공백]"의 모든 인스턴스를 "VALUES"로 바꾸려면 "모두 바꾸기"를 클릭하세요.

관련 정보