我有一个 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 处理文本 - 请参阅为什么使用 shell 循环处理文本被认为是不好的做法?)
答案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