我需要解析醒目的字符串:
dd.mm.yyyy %H:%M:%S into yyyy-mm-dd %H:%M:%S
示例:
10.04.2017 10:15:05 into 2017-04.10 10:15:05
我需要awk,因为文件很大,并且只有一列是带有“ |”的数据定界符。列号$ 3。
尝试拆分,但我坚持:
awk -F"|" '{split($3,data," "}' | awk '(split(data[3],data2,"."}
无法从数据中获取数据以按必需的顺序打印变量。
答案 0 :(得分:0)
如果awk中的变量string
读为“ 10.04.2017 10:14:05”,则可以使用字段分隔符将其拆分并重建:
split(string,a,'[. ]')
string_new = a[3]"-"a[2]"-"a[1]" "a[4]
答案 1 :(得分:0)
简单的awk
echo "10.04.2017 10:15:05" | awk -F"[. ]" '{print $3"-"$2"."$1,$4}
2017-04.10 10:15:05
将空格和点设置为字段分隔符并打印出来。
如果它是中间内容,则可能需要查找和调整更多内容。
答案 2 :(得分:0)
如果您在第三个字段中输入日期。
也许您需要用它来在第三字段中将.
替换为-
。像这样:
awk -F "|" '{gsub("\.","-",$3)}1'
请提供一些示例输入和预期输出。
答案 3 :(得分:0)
以下命令根据您的要求更改第三个字段($3
)。
awk -F"|" -v OFS="|" '{
split($3, o, "[. ]" );
$3 = o[3] "-" o[2] "-" o[1] " " o[4];
print
}'
对于输入dfdsfsdg| kljgslfdjgl|10.04.2017 10:15:05
,输出为dfdsfsdg| kljgslfdjgl|2017-04-10 10:15:05
。