将 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 处理文本 - 请参阅为什么使用 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

相关内容