다음 세부 정보가 포함된 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 Address
Miller()를 사용하여 필드를 만듭니다 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