如果第1列为空,我试图将日期放在列中。所以尝试下面的代码,但没有工作。这里输入文件是管道分隔的,所以需要输出管道分开
代码1
if ($1=="") {$1="date +%m%Y"}
代码2
if ($1=="") {$1=`date +%m%Y`}
代码3
if ($1=="") {$1=("Time = %m%Y", systime());}
必需的输出
|042018|
示例输入
ourceIifier|SourleName|GntCode|Dision|Suvision|ProfitCe1|Profie2|Plade|Retuiod|SuppliN
SAP|SAP_OSR_INV||||||||08AAACT2T|
预期的输出
ourceIifier|SourleName|GntCode|Dision|Suvision|ProfitCe1|Profie2|Plade|Retuiod|SuppliN
SAP|SAP_OSR_INV|||||||042018|08AAACT2T|
我的代码:
awk -F"|" -v OFS="|" 'NR>1{
if (match($14,/[0-9]+\.[0-9]+\.[0-9]{4}$/)) {
split ($14, mdy, ".");
$14 = sprintf ("%02d-%02.f-%02.f", substr(mdy[3],0,4), mdy[1], mdy[2]);
if ($1=="") {$1="SAP"}
if ($2=="") {$2="SAP_OSR_INV"}
if ($9=="") {$9="date +%m%Y"}
if ($26 ~ /^[0-9]$/) {$26=sprintf("%02.f",$26)}
if ($58~/^1000$/) {$10="27AAACT2438A1ZT";}}1' input.csv > output.csv
这里是第9栏($ 9)声明" if($ 9 ==""){$ 9 =" date +%m%Y"}"我想把日期。
答案 0 :(得分:2)
您忘记输出结果并且未正确获取日期,此工作正常:
awk -v date="$(date +"%m%Y")" '$1=="" {$1=date} {print $0}'
答案 1 :(得分:1)
如果你的awk是gawk(GNU),为了避免子shell中的外部命令:
$1=strftime("%m%d%y")
以及strftime的systime需要gawk
(仅用mawk& original-awk测试过)