查找并替换特定列

时间:2012-05-04 11:15:53

标签: python perl sed awk vi

我有一个这样的文件:

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解决方案。

2 个答案:

答案 0 :(得分:8)

perl -pale '$F[3]=~s/[.,]/$F[2]/g;$_=join" ",@F' file

See it

答案 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