我想在 Bash 中使用 gsub 将日期从 DD/MM/YYYY 重新格式化为 YYYY-MM-DD。
我使用了命令:
awk '{gsub(/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/, "([0-9]{4})\-([0-9]{2})\-([0-9]{2})", $4)}1' OFS=' ' example.tsv > example_date.tsv
在输入文件上:
No Name LastName Date
1 Jane Doe 24/05/78
2 James Cook 04/04/74
3 Jack Smith 24/05/78
4 John Beck 20/10/80
输出文件 example_date.tsv 与输入文件完全相同。我想知道这里可以改变什么。感谢您的帮助。
仅使用您显示的示例,请尝试在 GNU
awk
中执行以下操作。
awk -v RS='[[:space:]]+[0-9]+\\/[0-9]+\\/[0-9]+(\\s+|$)' '
RT && sub(/\n+$/,"",RT){
match(RT,/^([[:space:]]+)([^/]+)\/([^/]+)\/([0-9]+)(.*)$/,arr)
print $0 arr[1] arr[4] "/" arr[3] "/" arr[2]
}
' Input_file