我有一个文件,其中包含许多条目,如下所示:
US6DWMD01#DW01DDATAPURGE(060009/28)
US6DWMD01#DW01DDATAPURGE(060009/29)
US6DWMD01#DW01DDATAPURGE(060009/30)
US6DWMD01#DW01DDATAPURGE(060011/01)
US6DWMD01#DW11WPURESUN(060011/01)
US6TPA01#PPAORD__LDBASE(000009/26)
US6TPA01#PPAORD__LGBOX(000009/26)
US6TPA01#PPATDD__DEDMGT(060009/25)
US6TPA01#PPATDD__FLNET(060009/25)
US6TPA01#PPATDD__LORTBLS(060009/25)
US6TPA01#PPATDD__PPATTBLS(060009/25)
US6TPA01#PPATDD__P8020RP(060011/01)
我想使用 cut/sed/awk 命令在反向计数时在 5 个字符后插入空格,如下所示:
US6TPA01#PPATDD__DEDMGT(0600 09/25)
US6TPA01#PPATDD__FLNET(0600 09/25)
US6TPA01#PPATDD__LORTBLS(0600 09/25)
US6TPA01#PPATDD__PPATTBLS(0600 09/25)
US6TPA01#PPATDD__P8020RP(0600 11/01)
答案1
实际上有 6 个字符:2 个数字、1 个斜杠、2 个数字、1 个括号:
sed 's/.\{6\}$/ &/' < input > output
匹配$
行尾。
答案2
在正则表达式中,$
匹配行尾。因此,您可以使用它来匹配最后 6 个(您的问题提到 5 个,但您显示 6 个,除非您没有向我们显示尾随空格)字符,并在它们之前添加一个空格。例如:
塞德:
sed 's/......$/ &/' file
或者
sed 's/.\{6\}$/ &/' file
GNU 或 FreeBSD sed:
sed -E 's/.{6}$/ &/' file
珀尔
perl -pe 's/.{6}$/ $&/' file
awk
awk '{sub(/.{6}$/," &");print}' file