[英]Shell script awk concatenate text with entire column
我有一个csv文件Final.csv,我正在尝试更改它的第一个coulmn并添加一个文本,每个列行像这样是csv
Trialtime type Track time Notes Athlete
07:15:00 Warmup ABC 85.2 Initial warmup Jon
07:45:00 Sprint1 ABC 59.44 First Sprint Jon
08:30:00 TRIAL ABC 57.21 Final attempt Jon
08:00:00 Warmup ABC 120.51 Initial warmup Bill
08:40:05 Sprint1 ABC 61.35 First Sprint Bill
09:15:00 Sprint2 ABC 60.08 Second Sprint Bill
10:30:00 TRIAL ABC 60.37 Final attempt Bill
我想像这样添加一个试用时间库存的文本
Trialtime type Track time Notes Athlete
2012 07:15:00 Warmup ABC 85.2 Initial warmup Jon
2012 07:45:00 Sprint1 ABC 59.44 First Sprint Jon
2012 08:30:00 TRIAL ABC 57.21 Final attempt Jon
2012 08:00:00 Warmup ABC 120.51 Initial warmup Bill
2012 08:40:05 Sprint1 ABC 61.35 First Sprint Bill
2012 09:15:00 Sprint2 ABC 60.08 Second Sprint Bill
2012 10:30:00 TRIAL ABC 60.37 Final attempt Bill
我尝试用awk打印那个coulmn中的每一行
awk -F',' 'NR>1{print $1}1' OFS=',' $OutFileName
NR> 1是不包括标题但我想在coulmn中的每一行添加一个文本变量
我们说吧
text="2012"
现在我想修改试用时间列行,并将2012附加到每一行我正在做的事情
awk -F',' 'NR>1{$1$text;}1' OFS=',' $OutFileName
但是文本变量在awk里面不起作用怎么办? 我也想保留标题。
awk -v txt="2012" 'NR==1||$0=txt FS $0' yourFile
对于输入和输出示例,这将执行您想要的操作。
awk解决方案:
awk -v t="2012" 'BEGIN{ FS=OFS="\t" }NR>1{ $1=t" "$1 }1' file
输出:
Trialtime type Track time Notes Athlete
2012 07:15:00 Warmup ABC 85.2 Initial warmup Jon
2012 07:45:00 Sprint1 ABC 59.44 First Sprint Jon
2012 08:30:00 TRIAL ABC 57.21 Final attempt Jon
2012 08:00:00 Warmup ABC 120.51 Initial warmup Bill
2012 08:40:05 Sprint1 ABC 61.35 First Sprint Bill
2012 09:15:00 Sprint2 ABC 60.08 Second Sprint Bill
2012 10:30:00 TRIAL ABC 60.37 Final attempt Bill
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.