csv 파일의 첫 번째 열에 있는 데이터를 두 번째 열에 추가합니다.

csv 파일의 첫 번째 열에 있는 데이터를 두 번째 열에 추가합니다.

다음 세부 정보가 포함된 CSV 파일이 있습니다.

Userid,First Name,Last Name
jaina24,Aayush,Jain

내 요구 사항은 다음과 같이 기존 파일에 새 열을 추가하는 것입니다.

Userid,Email Address,First Name,Last Name
jaina24,[email protected],Aayush, Jain

두 번째 열은 첫 번째 열의 값을 복사한 다음 @xyz.com을 추가해야 합니다.

답변1

다음과 같이 사용할 수 있습니다(정확히 3개의 필드가 있는 경우).

awk -F\, 'FNR==1 {print $1",Email Address,"$2","$3} FNR!=1{print $1","$1"@xyz.com,"$2","$3}' input_file

답변2

awk를 사용할 수 있습니다.

awk 'BEGIN{FS=OFS=","}{$1=$1 OFS (FNR>1 ? $1 "@xyz.com" : "Email address")}1' file

또는 sed

sed '1s/[^,]*/&,Email address/;1!s//&,&@xyz.com/' flie

또는 bash(그러나 텍스트 처리에는 bash를 사용하지 마십시오.쉘 루프를 사용하여 텍스트를 처리하는 것이 왜 나쁜 습관으로 간주됩니까?)

답변3

$ perl -F, -lane 'if ($. == 1) {
                    splice @F, 1, 0, "Email Address";
                  } else {
                    splice @F, 1, 0,$F[0] . "\@xyz.com";
                  };
                  print join ",", @F' input.csv
Userid,Email Address,First Name,Last Name
jaina24,[email protected],Aayush,Jain

답변4

Email AddressMiller()를 사용하여 필드를 만듭니다 mlr.

$ mlr --csv put '$["Email Address"] = $Userid . "@xyz.com"' file
Userid,First Name,Last Name,Email Address
jaina24,Aayush,Jain,[email protected]

또한 새 필드를 두 번째 열로 이동합니다.

$ mlr --csv put '$["Email Address"] = $Userid . "@xyz.com"' then reorder -f Userid,"Email Address" file
Userid,Email Address,First Name,Last Name
jaina24,[email protected],Aayush,Jain

관련 정보