更新unix文本文件中的值

时间:2013-10-22 12:42:53

标签: bash file unix text sed

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

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

我需要输出文本如下

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

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

2 个答案:

答案 0 :(得分: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,使用两个不同的字段分隔符(|和空格),但是你必须指定每个输出字段分隔符,这样才能使最终结果看起来有点难看。

答案 1 :(得分: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|