주어진 단어 뒤의 줄에서 공백을 제거하는 방법은 무엇입니까?

주어진 단어 뒤의 줄에서 공백을 제거하는 방법은 무엇입니까?

file.txt가 있다고 가정해 보겠습니다. 파일 내용은 다음과 같습니다.

insert into x values('a ','  b',' c ');
insert into x values('  m ','  n  ','  p   ');

난 그냥 각 줄의 단어 뒤에 공백을 제거하고 싶습니다 values.

원하는 출력:

insert into x values('a','b','c');
insert into x values('m','n','p');

답변1

sed -e ':a' -e "s/\('[^' ]*\)  */\1/g" -e ta  file.txt

insert into x values('a','b','c');
insert into x values('m','n','p');

우리는 루프 메커니즘을 동시에 사용하여 한 줄에 있을 수 있는 작은따옴표 쌍 "..." 내의 공백을 점차적으로 지웁니다. 이는 TAB이 없다고 가정하지만 처리할 수도 있습니다.

sed -e ':a' -e "s/\('[^'[:space:]]*\)[[:space:]]\{1,\}/\1/g" -e ta

답변2

이러한 값을 테이블에 삽입했다고 가정하면 공백 문자를 잘라낼 수 있습니다.

c1또한 테이블의 열이 , c2및 다음이라고 가정합니다 c3.

UPDATE x SET c1 = TRIM(c1), c2 = TRIM(c2), c3 = TRIM(c3);

TRIM()기능은 선행 및 후행 공백을 제거합니다.

임시 테이블에서 먼저 테스트하려면 다음을 수행하세요.

CREATE TEMPORARY TABLE t AS SELECT * FROM x;
UPDATE t SET c1 = TRIM(c1), c2 = TRIM(c2), c3 = TRIM(c3);
SELECT * from t;

... 아니면 그냥

SELECT TRIM(c1), TRIM(c2), TRIM(c3) FROM x;

이것은 데이터베이스의 어떤 것도 전혀 변경하지 않습니다.


SQL 팁: 값을 삽입할 때 열 이름을 언급해야 합니다.

INSERT INTO x (c1, c2, c3) VALUES ('a', 'b', 'c');

INSERT이는 문서 역할을 하며 코드의 모든 문을 찾아서 변경할 필요 없이 테이블의 스키마를 변경할 수 있습니다(새 열 삽입 또는 열 재배열).

답변3

awk -F '(' '{ gsub(" ","",$2); print $1 FS $2; }' input.txt

설명하다

  1. 문자열을 '로 나눕니다.(' 기호 - 이제 두 개의 필드가 있습니다.
    $1 = insert into x values
    $2 = 'a ',' b',' c ');
  2. 프로세스2달러필드, 모든 공백을 빈 공백으로 바꿉니다.
  3. 새 문자열을 어셈블합니다.
    1(변경되지 않음) +FS(왼쪽 대괄호) +2달러(처리되었으며 이제 공백이 없습니다).

산출:

insert into x values('a','b','c');
insert into x values('m','n','p');

관련 정보