테이블 열의 소문자를 대문자로 변경

테이블 열의 소문자를 대문자로 변경

저는 다음과 같은 형식으로 데이터를 수집합니다.

CREDITS,EXPDATE,USER,GROUPS
99,01 jun 2018,sylvain,team:::admin
52,01    dec   2018,sonia,team
52,01    dec   2018,sonia,team
25,01    jan   2019,sonia,team
10,01 jan 2019,sylvain,team:::admin
8,12    jun   2018,öle,team:support

"사용자" 열의 첫 글자를 대문자로 쓰고 모든 이름이 소문자 대신 대문자로 시작하도록 하고 싶습니다. 어떻게 해야 하나요?

그리고 표의 불필요한 내용을 제거한 후 열의 길이를 조절하여 깔끔하게 정리하려면 어떻게 해야 :하나요 ,?

답변1

awk당신을 위해 할 수 있는 일:

awk '{ $3 = toupper(substr($3,1,1)) substr($3,2) } $3' FS=, OFS=, file
CREDITS,EXPDATE,USER,GROUPS
99,01 jun 2018,Sylvain,team:::admin
52,01    dec   2018,Sonia,team
52,01    dec   2018,Sonia,team
25,01    jan   2019,Sonia,team
10,01 jan 2019,Sylvain,team:::admin
8,12    jun   2018,Öle,team:support

이 함수 substr는 다음 형식을 가지며 substr(s, a, b)문자열 s에서 위치 a에서 시작하여 b 문자를 반환합니다. 매개변수 b는 선택사항입니다. 주어진 길이만큼 문자열을 분할할 수 있습니다. 여기서는 세 번째 필드의 첫 번째 문자만 대문자로 시작하고, substr함수는 초기 문자열, 추출할 첫 번째 문자의 첫 번째 인덱스 및 추출할 문자 수를 사용합니다. 마지막 인수가 누락된 경우 substr문자열의 나머지 모든 문자가 사용됩니다.

즉, substr($3,1,1)$3의 첫 번째 문자 substr($3,2)와 나머지 문자가 평가됩니다.

불필요한 추가 문자를 제거하려면 출력을 sed 다음 으로 파이프하여 column열의 길이를 조정할 수 있습니다.

awk '{ $3 = toupper(substr($3,1,1)) substr($3,2) } $3' FS=, OFS=, file | sed -e 's/,/\t/g' -e 's/:/ /g' | awk '{print $1, $2","$3","$4"  "$5" " $6" " $7" "$8}' | column -t
CREDITS  EXPDATE,USER,GROUPS
99       01,jun,2018          Sylvain  team  admin
52       01,dec,2018          Sonia    team
52       01,dec,2018          Sonia    team
25       01,jan,2019          Sonia    team
10       01,jan,2019          Sylvain  team  admin
8        12,jun,2018          Öle      team  support

답변2

나는 Goro의 제안처럼 많은 파이핑이 필요하지 않다고 생각합니다. awk스크립트에서 수행되어야 합니다 column.

awk '
    {gsub (/[   ]+/, "/", $2)
     $3 = toupper(substr($3,1,1)) substr($3,2)
     gsub (/,/, "\t")
     gsub (/:+/, " ")
    }
1

' FS=, OFS=, file
CREDITS EXPDATE USER    GROUPS
99      01/jun/2018 Sylvain team admin
52      01/dec/2018 Sonia   team
52      01/dec/2018 Sonia   team
25      01/jan/2019 Sonia   team
10      01/jan/2019 Sylvain team admin
8       12/jun/2018 öle team support

관련 정보