以数据格式拆分唤醒的字符串

时间:2019-07-02 11:09:20

标签: awk

我需要解析醒目的字符串:

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,"."}

无法从数据中获取数据以按必需的顺序打印变量。

4 个答案:

答案 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