我正在尝试使用 awk,拆分然后打印,但遇到错误
输入:
id day userId itemId
1 12/1/17 8:32 2232 tv
2 1/12/18 10:18 3232 fdfs
3 2/9/18 10:50 232 fdsf
4 3/6/18 12:35 345456 fdg
预期产出
id datetime monthyear time userId itemId
1 12/1/17 8:32 12/17 8:32 2232 tv
2 1/12/18 10:18 1/18 10:18 3232 fdfs
3 2/9/18 10:50 2/18 10:50 232 fdsf
4 3/6/18 12:35 3/18 12:35 345456 fdg
答案1
怎么样
awk -F"\t" '
NR == 1 {$2 = "datetime" OFS "monthyear" OFS "time"
}
NR > 1 {split ($2, T, "[/ ]")
$2 = $2 OFS T[1] "/" T[3] OFS T[4]
}
1
' OFS="\t" file
id datetime monthyear time userId itemId
1 12/1/17 8:32 12/17 8:32 2232 tv
2 1/12/18 10:18 1/18 10:18 3232 fdfs
3 2/9/18 10:50 2/18 10:50 232 fdsf
4 3/6/18 12:35 3/18 12:35 345456 fdg
答案2
RudiC 展示了如何转换文件。要将其保存回同一文件中:
使用 GNU awk:
gawk -i inplace '...' file
使用
sponge
从moreutils
包装中:awk '...' file | sponge file
或者使用临时文件
tmp=$(mktemp) awk '...' file > "$tmp" && mv "$tmp" file