특정 단어 뒤의 모든 공백을 제거하기 위해 정규식을 사용하려고 합니다. 내가 사용하는 편집기는 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"로 바꾸려면 "모두 바꾸기"를 클릭하세요.