我有一個文件,其中包含許多條目,如下所示:
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