awk+;更改列值并保留双引号

awk+;更改列值并保留双引号,awk,Awk,我有以下数据: $ head test "Rec Open Date","MSISDN","IMEI" "2015-01-04",100,200 "2015-01-04",100,200 "2015-01-04",100,200 "2015-01-04",100,200 "2015-01-04",100,200 "2015-01-04",100,200 "2015-01-04",100,200 "2015-01-04",100,200 "2015-01-04",100,200 我可以使用此命令

我有以下数据:

$ head test
"Rec Open Date","MSISDN","IMEI"
"2015-01-04",100,200
"2015-01-04",100,200
"2015-01-04",100,200
"2015-01-04",100,200
"2015-01-04",100,200
"2015-01-04",100,200
"2015-01-04",100,200
"2015-01-04",100,200
"2015-01-04",100,200
我可以使用此命令更改第一列的值:

$ awk -F, 'NR>1{$1="2015-01-05"}1' OFS=, test > tmpfile && mv tmpfile test
有了这个命令,我松开了双引号,我想保留双引号。是否可以修改此命令以实现此目的

$ head test
"Rec Open Date","MSISDN","IMEI"
2015-01-05,100,200
2015-01-05,100,200
2015-01-05,100,200
2015-01-05,100,200
2015-01-05,100,200
2015-01-05,100,200
2015-01-05,100,200
2015-01-05,100,200
2015-01-05,100,200

来自GNU Awk用户指南

\“文本双引号(仅字符串常量需要)。此 当您想要写入一个字符串常量 包含双引号。因为字符串由双引号分隔 引号,则需要在中转义字符串中的引号 命令awk继续处理字符串的其余部分

这并不是说您正在“丢失”它们,而是事实上,
$1
最初是
“某物”
,您将其替换为
另一件事
。由于这件
另一件事
是一个字符串,您可以使用双引号将其记下。因此,要恢复双引号,您需要在进行替换时进行指示

这可能更干净:

awk -v new='"2015-01-05"' 'BEGIN {FS=OFS=","} NR>1{$1=new}1' file
    ^^^^^^^^^^^^^^^^^^^^^                              ^
         |---------------------------------------------|
    we provide the var ............... and we replace with it
      surrounded by "

谢谢,还有所有的细节
awk -v new='"2015-01-05"' 'BEGIN {FS=OFS=","} NR>1{$1=new}1' file
    ^^^^^^^^^^^^^^^^^^^^^                              ^
         |---------------------------------------------|
    we provide the var ............... and we replace with it
      surrounded by "