我有一个这样的文件:
Name Position Letter String
Bla 123 A ..B.,,,.C..
Bla 123 B ..a.,,,.C..
Bla 123 C ..b.,,,.A..
我想将.
和,
替换为Letter(在第一行A
)
最终产品:
Name Position Letter String
Bla 123 A AABAAAAACAA
Bla 123 B BBaBBBBBCBB
Bla 123 C CCbCCCCCACC
awk思想是将第4列中的字符替换为第3列中的“the”字符。 我认为awk应该是正确的工具,但我坚持用字符串替换字符。
sed s/\(^.\{4\}\)./\\{3\}/
没有用,我认为sed可能是错误的工具。
欢迎awk / sed / python / perl / vi解决方案。
答案 0 :(得分:8)
perl -pale '$F[3]=~s/[.,]/$F[2]/g;$_=join" ",@F' file
答案 1 :(得分:3)
解决方案,但未使用regular expressions
:
with open('in.txt') as f:
for x in f:
x=x.rstrip().split()
x[-1]=x[-1].replace('.',x[-2])
x[-1]=x[-1].replace(',',x[-2])
print(" ".join(x))
Name Position Letter String
Bla 123 A AABAAAAACAA
Bla 123 B BBaBBBBBCBB
Bla 123 C CCbCCCCCACC