我该如何转换:
RS.PK.03.01.4200.03.014.01
到man03140101
?
需要做什么?
RS.PK.03.01.4200.
03.014.01
应转换为031401
- “0
”已从“014
”中删除。 01
添加到最后:03140101
man
:man03140101
我需要在文件中进行数百次此类转换。
答案 0 :(得分:4)
一种可能性,使用awk
:
awk -F. '{ printf "man%.2d%.2d%.2d01\n", $6, $7, $8 }'
输出:
$ echo RS.PK.03.01.4200.03.014.01 | awk -F. '{ printf "man%.2d%.2d%.2d01\n", $6, $7, $8 }'
man03140101
$
答案 1 :(得分:1)
您的要求在几个方面尚不清楚,但以下内容符合您的要求,至少应该让您靠近目的地:
awk -F. '{sub(/^0/,"",$7); # "0" was removed from "014"
print "man" $6 $7 $8 "01" }'
(如果您是awk
的新用户,我建议您先阅读BEGIN
,FS
,OFS
和sub
。 )
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed -rn 's/.*\.(.*)\.0?(.*)\.(.*)$/man\1\2\301/p'
此模式匹配最后三个.
,并使用分组和反向引用来构建所需的字符串。请注意man
和01
前缀并附加到反向引用1,2和3.此外,0
在反向引号2之前是可选的。