需要插入空格以分隔第8列的日期和时间。
输入文件:
AAA|detail_hist|count|||766855||2014-08-2019:49:57
BBB|detail_hist|count|||766855||2014-07-2019:49:57
必需的输出:
AAA|detail_hist|count|||766855||2014-08-20 19:49:57
BBB|detail_hist|count|||766855||2014-07-20 19:49:57
答案 0 :(得分:3)
您可以使用:
$ sed -r 's/[0-9]{4}-[0-9]{2}-[0-9]{2}/& /' file
AAA|detail_hist|count|||766855||2014-08-20 19:49:57
BBB|detail_hist|count|||766855||2014-07-20 19:49:57
它会查找XXXX-YY-ZZ
的块并将其替换为XXXX-YY-ZZ
(即块+空格)。
如果不支持-r
,则需要转义每个{}
:
sed 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/& /' file
答案 1 :(得分:2)
通过sed,
$ sed 's/^\(.*\)\([0-9][0-9]:.*:.*\)$/\1 \2/g' file
AAA|detail_hist|count|||766855||2014-08-20 19:49:57
BBB|detail_hist|count|||766855||2014-07-20 19:49:57
答案 2 :(得分:2)
我知道您要求使用sed解决方案但是当您谈论修改特定字段编号时,您应该考虑使用awk,因为它内置了对编号字段的支持:
$ awk 'BEGIN{FS=OFS="|"} {sub(/.{10}/,"& ",$8)} 1' file
AAA|detail_hist|count|||766855||2014-08-20 19:49:57
BBB|detail_hist|count|||766855||2014-07-20 19:49:57
答案 3 :(得分:0)
如果结构与样品一样(第8列后面没有任何内容)
sed 's/.\{8\}$/ &/' YourFile
具有空间安全性
sed 's/.\{8\} *$/ &/' YourFile
--posix
与gnu sed