我正在使用以下 sed 命令,我想将其转移到 awk 以将日期从2023-12-15更改为15/12/2023:
echo "c_az_6332,2023-12-15,-24.01,BP_Connect,Particulars,details" \
| sed 's/\(....\)-\(..\)-\(..\)/\3\/\2\/\1/g'
导致
c_az_6332,15/12/2023,-24.01,BP_Connect,Particulars,details
如何使用 awk gsub|sub|gensub 执行相同操作?
我尝试过以下方法:
echo "c_az_6332,2023-12-15,-24.01,BP_Connect,Particulars,details" \
| awk -F "," '{gsub(\(....\)-\(..\)-\(..\),\3\/\2\/\1,$2) ; print $0}'
和
echo "c_az_6332,2023-12-15,-24.01,BP_Connect,Particulars,details" \
| awk -F "," '{gsub(/\(....\)-\(..\)-\(..\)/,\3\/\2\/\1,$2) ; print $0}'
两者都不起作用。有人可以帮忙吗?
,
作为输入 (FS
) 和输出 (OFS
) 的字段分隔符:FS = OFS = ","
$2
) 拆分为命名数组:split($2, a, "-")
sprintf
和数组项重新格式化第 2 列:$2 = sprintf("%d/%d/%d", a[3], a[2], a[1])
echo "c_az_6332,2023-12-15,-24.01,BP_Connect,Particulars,details" | awk '
BEGIN { FS = OFS = ","; }
{ split($2, a, "-");
$2 = sprintf("%d/%d/%d", a[3], a[2], a[1]);
print;
}
'
c_az_6332,15/12/2023,-24.01,BP_Connect,Particulars,details