2012-05-04 33 views
-3

我有一個這樣的文件替換:查找並在一個特定的列

Name Position Letter String 
Bla 123 A ..B.,,,.C.. 
Bla 123 B ..a.,,,.C.. 
Bla 123 C ..b.,,,.A.. 

我想更換.,以字母(在它的A第一行)

最終產品:

Name Position Letter String 
Bla 123 A AABAAAAACAA 
Bla 123 B BBaBBBBBCBB 
Bla 123 C CCbCCCCCACC 

awk的想法是在第3列 以「」字符替換列4字,我認爲awk的建議立即進行刪除d是正確的工具,但我堅持用字符串替換字符。

sed s/\(^.\{4\}\)./\\{3\}/沒有工作,我認爲sed可能是錯誤的工具。

歡迎使用Awk/sed/python/perl/vi解決方案。

+1

'AWK「{GSUB(/ \ |,/,$ 3,$ 4); print}'inputfile' –

+0

這就是我一直在尋找的!正確使用gsub命令。 – AWE

回答

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

See it

+1

+1,我不知道這是否是一個perl腳本「病態肥胖」...... – Gleno

+0

肥胖和醜陋,但做了工作。謝謝。 – AWE

+1

'awk'a = $ 3 {gsub(/ \。| \,/,a);打印}文件 – Tedee12345

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 
+1

Python,以防有人不認識它。 –

相關問題