sed는 awk와 결합하여 줄 끝의 마지막 공백만 제거합니다.

sed는 awk와 결합하여 줄 끝의 마지막 공백만 제거합니다.

나한테는 그 대사가 있어

Siouxsie Sioux  Siouxsie Sioux  ...     
Sylvia Tobias   Sylvia Tobias   ...     
Sydney Urshan   Sydney Urshan   ... 
Club Drummer (uncredited)   Club Drummer (uncredited)   ...

awk를 사용하여 분리된 탭의 첫 번째 열을 인쇄한 다음,

awk -F "\t" '{print $1","}'

문제는 없지만 끝에 공백이 있어서 sed를 사용합니다.

awk -F "\t" '{print $1","}'|sed -r 's/(^[^[:blank:]]+[[:blank:]]+[^[:blank:]]+)[[:blank:]]+/\1/'

이렇게 하면 트릭이 수행되지만 두 번째 공백도 제거되므로

Club Drummer (uncredited) ,

~이 되다

Club Drummer(uncredited),

제 생각에는

Club Drummer (uncredited),

그렇다면 마지막 공백만 제거하려면 어떻게 해야 합니까? 감사해요

답변1

awk -F ' *\t' '{print $1 ","}'

또는:

sed $'s/ *\t.*/,/'

답변2

awk자체를 사용하여 후행 공백을 제거합니다.

awk -F'\t' '{sub(/[[:blank:]]+$/, "", $1);print $1","}' file

답변3

printf대신 을 사용하여 print이 문제를 해결할 수 있습니다 .

$ awk '{for (i=1;i<NF;i++)printf("%s ", $i);printf("\b%s\n",",")}' file.txt 
Siouxsie Sioux Siouxsie Sioux,
Sylvia Tobias Sylvia Tobias,
Sydney Urshan Sydney Urshan,
Club Drummer (uncredited) Club Drummer (uncredited),

아니면 필요하다면sed

$ sed -re 's/ +\.\.+/,/g' file.txt 
Siouxsie Sioux  Siouxsie Sioux,     
Sylvia Tobias   Sylvia Tobias,     
Sydney Urshan   Sydney Urshan, 
Club Drummer (uncredited)   Club Drummer (uncredited),

답변4

나는 전체 작업을 다음을 사용하여 sed 's/^\([^\t]*\).*/\1,/'수행 할 수 있다고 생각합니다.

관련 정보