-1

我的输入文本文件(abc.txt)如下,

2013-10-15 00:58:59.2557431|Florida|12345|

我需要如下的输出文本

2013-10-15 00:58:59.2557431|2013-10-15|Florida|12345|

也就是说,我需要单独提取日期部分并将其添加为输出文本文件中的第二个字段。

4

2 回答 2

1

解决方案使用awk

awk -F\| '{split($1,a," ");$2=a[1] OFS $2}1' OFS=\|
2013-10-15 00:58:59.2557431|2013-10-15|Florida|12345|
于 2013-10-22T18:03:32.853 回答
1

sed

$ sed -r 's/([^ ]*) ([^|]*)/\1 \2|\1/' file
2013-10-15 00:58:59.2557431|2013-10-15|Florida|12345|
2013-11-19 10:58:59.2544743|2013-11-19|Chicago|92345|
2013-12-19 11:58:59.2517431|2013-12-19|Ohio|13335|

它将块捕捉到空间(1)和管道(2),然后打印(1) (2)|(1)

也可以使用 awk 完成,采用两个不同的字段分隔符(| 和空格),但是您必须指定每个输出字段分隔符,因此最终结果读起来有点难看。

于 2013-10-22T12:45:43.727 回答