【发布时间】:2013-11-13 00:37:55
【问题描述】:
关于较早的答案,我需要将日期格式从 yyyy-mm-dd 更改为 yyyy/mm/dd。
我得到了这个答案:
sed -i 's@,\(....\)-\(..\)-\(..\) @,\1/\2/\3 @' /home/Documents/blah.csv
这非常有效,每行只有一个实例。然而,一行可以有许多这样的日期,我如何更改 sed 命令,以便它为检测到的每个实例(不仅仅是第一个)执行它。
示例文档:
2012-09-09,123143,2012-09-09,12837,2012-09-07,2131,2012-08-06,1237
#and many more lines like that.
运行 sed 命令后,我得到了这个:
2012-09-09,123143,2012/09/09,12837,2012-09-07,2131,2012-08-06,1237
它只适用于第二个日期实例,我如何使它适用于所有这些实例?
【问题讨论】:
-
也许可以将
-替换为/。这将与tr -- - / -
您可以将字母
g作为修饰符附加到 sed 命令,使其在每一行中看起来像 g。但是,请确保所有匹配项保持正确。示例:sed -i 's@match@replacement@g' document -
是的.. g 工作.. 但它总是跳过第一个.. 所以基本上我现在得到这个:2012-09-09,123143,2012/09/09,12837,2012/ 09/07,2131,2012/08/06,1237
-
它有效,我错过了他额外的逗号。基本上它必须是这个 sed -i 's@(..)-(..)-(..) @\ 1/\2/\3 @g' /home/Documents/blah.csv