쉼표로 구분된 특정 필드의 모든 공백을 제거합니다.

쉼표로 구분된 특정 필드의 모든 공백을 제거합니다.

입력하다:

11 22 33 44,1 2,2

산출

11223344,1 2,2

1첫 번째 필드 앞에 오는 필드 번호의 모든 공백을 제거하고 싶습니다 comma.

답변1

를 사용하려면 sed루프가 필요합니다.

sed -e :1 -e 's/^\([^,]*\) /\1/;t1'

또는 보존 공간을 사용하여 모든 공백을 교체한 다음 거기에서 줄의 원래 부분을 복원할 수 있습니다.

sed 'h;s/,.*//;s/ //g;G;s/\n[^,]*//'

다음 명령을 사용하면 더 쉬울 것입니다 awk.

awk -F, -v OFS=, '{gsub(" ", "", $1); print}'

또는 perl:

perl -F, -lpe '$F[0] =~ s/ //g; $_ = join ",", @F'

또는:

perl -pe 's{[^,]*}{$& =~ s/ //gr}e'

또는:

perl -pe 's/\G[^, ]*\K //g'

마지막 것은 설명할 가치가 있을 것입니다: \G깃발을 동반하는 것입니다 g.

플래그는 전역 교체를 g의미하며 이전 발생 이후 다음 발생을 계속 검색하는 g루프를 의미합니다 .perl

\G이전 일치 항목 이후의 위치, 즉 마지막으로 교체된 공백 이후와 루프의 첫 번째 패스에서 줄의 시작 부분과 일치합니다. 사용할 때 [^,]첫 번째 쉼표를 지나는 루프는 허용되지 않으므로 그 앞의 모든 공백을 바꾸십시오.

관련 정보