下面给出了文件内容和使用的 awk 命令:
输入文件:in_t.txt
1,ABC,SSS,20-OCT-16,4,1,0,5,0,0,0,0
2,DEF,AAA,20-JUL-16,4,1,0,5,0,0,0,0
Run Code Online (Sandbox Code Playgroud)
预期输出文件:
SSS|2016-10-20,5
AAA|2016-07-20,5
Run Code Online (Sandbox Code Playgroud)
我尝试了以下命令:
awk -F , '{print $3"|"$(date -d 4)","$8}' in_t.txt
Run Code Online (Sandbox Code Playgroud)
得到的输出文件为:
SSS|20-OCT-16,5
AAA|20-JUL-16,5
Run Code Online (Sandbox Code Playgroud)
我唯一想知道的是如何使用相同的 awk 命令格式化日期。尝试过
awk -F , '{print $3"|"$(date -d 4)","$8 +%Y-%m-%d}' in_t.txt
Run Code Online (Sandbox Code Playgroud)
出现语法错误。我可以得到一些帮助吗?
最好在 shell 本身中执行此操作并用于date -d
转换date
格式:
#!/bin/bash
while IFS=',' read -ra arr; do
printf "%s|%s,%s\n" "${arr[2]}" $(date -d "${arr[3]}" '+%Y-%m-%d') "${arr[7]}"
done < file
SSS|2016-10-20,5
AAA|2016-07-20,5
Run Code Online (Sandbox Code Playgroud)