繁体   English   中英

Shell脚本awk将文本与整个列连接起来

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM