以数据格式拆分awked字符串

以数据格式拆分awked字符串,awk,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,"."} 无法从数据中获取数据以按必要的顺序打印变量。如果您在a

我需要解析被唤醒的字符串:

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

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

如果您在awk中有一个变量
字符串
,其内容为'10.04.2017 10:14:05',您可以使用字段分隔符将其拆分并重新生成:

split(string,a,'[. ]')
string_new = a[3]"-"a[2]"-"a[1]" "a[4]

简单的
awk

echo "10.04.2017 10:15:05" | awk -F"[. ]" '{print $3"-"$2"."$1,$4}
2017-04.10 10:15:05
将空格和点设置为字段分隔符并打印出来。

如果是中间的事情,你可能需要找到和调整更多。

如果你的日期在第三个字段

也许您只需要将第三个字段中的
替换为
-
。大概是这样的:

awk -F "|" '{gsub("\.","-",$3)}1'

请提供一些示例输入和预期输出。

以下命令根据您的要求更改第三个字段(
$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:15:05
dd.mm.yyyyyy%H:%S到yyyyyyy-mm-dd%H:%S
这是整个输入字符串,或者说输入只是
dd.mm.yyyyyyyyyyy%H:%S
部分?你能重新格式化这篇文章吗?你们能把输入和输出分开,并把它放在不同的代码块中吗
只有一列是带有“|”分隔符的数据
-在您提供的示例输入中没有“
字符。类似于“
awk-F'|”{n=split($3,a,”)”;for(i=1;InNot clear request)。请提供一些输入行和预期输出。
只有一列是带有“|”的数据分隔符
mean?不要只显示要转换的字符串,在示例输入的几行(3行或4行)内的其他(3行或4行)字段中显示它,并显示相应的预期输出。