在这里,我想在列名年龄之后添加一个标题名为Gender的列,该列具有值。
cat Person.csv
First_Name|Last_Name||Age|Address
Ram|Singh|18|Punjab
Sanjeev|Kumar|32|Mumbai我用的是:
cat Person.csv | sed '1s/$/|Gender/; 2,$s/$/|Male/' 产出:
First_Name|Last_Name||Age|Address|Gender
Ram|Singh|18|Punjab|Male
Sanjeev|Kumar|32|Mumbai|Male我想要这样的产出:
First_Name|Last_Name|Age|Gender|Address
Ram|Singh|18|Male|Punjab
Sanjeev|Kumar|32|Male|Mumbai发布于 2022-08-23 20:19:13
我拿出了第二个管道(为了一致性起见).sed应该如下所示:
$ sed -E '1s/^([^|]+\|[^|]+\|[^|]+\|)/\1Gender|/;2,$s/^([^|]+\|[^|]+\|[^|]+\|)/\1male|/' Person.csv
First_Name|Last_Name|Age|Gender|Address
Ram|Singh|18|male|Punjab
Sanjeev|Kumar|32|male|Mumbai我们匹配并记住前三个字段,并将它们替换为自己,然后分别是Gender和male。
发布于 2022-08-23 20:34:24
使用awk
$ awk -F"|" 'BEGIN{ OFS="|"}{ last=$NF; $NF=""; print (NR==1) ? $0"Gender|"last : $0"Male|"last }' Person.csv
First_Name|Last_Name||Age|Gender|Address
Ram|Singh|18|Male|Punjab
Sanjeev|Kumar|32|Male|Mumbai使用“\”作为输入字段分隔符,并将输出字段分隔符设置为“\”。将最后一列值存储在名为last的变量中,然后删除最后一列$NF=""。然后根据是否为第一行或其后的行打印适当的输出。
https://stackoverflow.com/questions/73464180
复制相似问题