我有以下一行:
pr: 10.00 20.00
我想用" 00.00"替换第三列同时保留线上的标签和空格。第一列和第二列之间有一个空格,第二列和第三列之间有一个标签。以下命令有效除了它在第一列和第二列之间插入一个选项卡:
awk' $ 1 ==" pr:" {OFS =" \ t&#34 ;; $ 3 =" 00.00"} 1' mydata.txt>出
如何保留原始行中出现的空格和标签?
谢谢!
答案 0 :(得分:1)
简单 awk 方法:
awk -F'\t| ' '{$NF="00.00"}1' input
输出:
pr: 10.00 00.00
答案 1 :(得分:1)
要修复原始脚本,只需:
awk 'BEGIN{FS=OFS="\t"} $1~/^pr:/{$2="00.00"} 1' mydata.txt > out
答案 2 :(得分:0)
使用sub
:
$ awk '{sub(/20.00/,"00.00")}1' file
pr: 10.00 00.00
或者如果它是最后一个字段:
$ awk '{sub(/[^ \t]+$/,"00.00")}1' file
pr: 10.00 00.00
编辑:如果你正在使用GNU awk,split
记录并存储分隔符:
$ awk '
{
n=split($0,a,FS,seps) # save delim spaces to seps
a[3]="00.00" # changes to a
for(i=1;i<=n;i++) # loop to n
printf "%s%s",a[i],(i==n?ORS:seps[i]) # print a and seps
}' file
pr: 10.00 00.00