CSV 파일의 특정 열에서 모든 대문자를 제거합니다.

CSV 파일의 특정 열에서 모든 대문자를 제거합니다.

다음 형식의 3000개 이상의 행이 포함된 CSV 파일이 있습니다.

R1C1, ABC123abc, R1C3
R2C1, DEFG456defg, R2C3
R3C1, HIJKL789hijkl, R3C3

내용이 다음과 같이 보이도록 파일의 두 번째 열에서 모든 대문자를 제거해야 합니다.

R1C1, 123abc, R1C3
R2C1, 456defg, R2C3
R3C1, 789hijkl, R3C3

이것이 어떻게 달성될 수 있습니까?

답변1

당신은 그것을 사용할 수 있습니다 awk:

$ awk -F',' '{sub(/[[:upper:]]+/,"",$2)}1' OFS=',' file
R1C1, 123abc, R1C3
R2C1, 456defg, R2C3
R3C1, 789hijkl, R3C3

답변2

두 번째 필드의 대문자가 흩어지는 경우,

awk -F ',' '{gsub(/[[:upper:]]/, X, $2)}1' OFS=, file

답변3

그리고밀러( mlr):

$ mlr --csv -N put '$2 = gsub($2, "[[:upper:]]", "")' file
R1C1, 123abc, R1C3
R2C1, 456defg, R2C3
R3C1, 789hijkl, R3C3

이는 데이터를 헤더 없는 CSV 파일로 읽고 모든 대문자를 공백으로 바꿔(즉, 제거) 각 레코드의 두 번째 필드를 수정합니다.

답변4

Bash는 다음 명령과 함께 사용됩니다 sed.

#!/bin/bash
cnt=0;
while IFS=, read a b c; 
do 
 echo -n $a ; cnt=$[cnt+1]; 
 sed  -e 's/[^,]*,\([^,]*\).*/\1/' file | 
 sed  -e 's/\([[:upper:]]\)//g'| 
 sed  -e  $cnt'q;d'|
 tr '\n' ' ' ;
 echo  $c; 
done  < file

생산하다:

R1C1 123abc R1C3
R2C1 456defg R2C3
R3C1 789hijkl R3C3

관련 정보