점과 일치하는 단어를 제외한 단어 바꾸기

점과 일치하는 단어를 제외한 단어 바꾸기

문서

TxA1000| Tx5000| TxAc2000  
Ms67Ty| AtX0000| Tx5000

원하는 출력:

.Tx5000.
..Tx5000

시도한 솔루션:

awk -F '|' '!/Tx5000/{next}{gsub(/[aA0-zZ9]/, ".")}1 file

얻은 출력:

.......| ......| ........
......| .......| ......

도움이 필요합니다.

답변1

아마도:

awk -F '[|] ' -v OFS="" -v ok="Tx5000" '
   {for (i=1; i<=NF; i++) if ($i != ok) $i="."; print}
' <<END
TxA1000| Tx5000| TxAc2000
Ms67Ty| AtX0000| Tx5000
END
.Tx5000.
..Tx5000

필드 구분 기호는 "파이프 + 공백"인 것으로 보이므로 매개 변수가 -F더 구체적입니다.


"파일에 적용되지 않음" 진술을 좀 더 구체적으로 설명해야 합니다.

$ cat >|file
TxA1000| Tx5000| TxAc2000
Ms67Ty| AtX0000| Tx5000

$ awk -F '[|] ' -v OFS="" -v ok="Tx5000" '
   {for (i=1; i<=NF; i++) if ($i != ok) $i="."; print}
' file
.Tx5000.
..Tx5000

awk '...' < file와 같은 결과cat file | awk '...'

답변2

파이썬

#!/usr/bin/python
import re
l=re.compile(r'Tx5000')
k=open('rr.txt','r')
for i in k:
    if re.search(l,i):
        o=i.strip().split("|")
        
        for w in range(0,len(o),1):
            we=[]
            if (o[w].strip() == "Tx5000"):
                
                for q in range(0,len(o),1):
                    if (q == w):
                        we.append("Tx5000")
                    else:
                        we.append(".")
            print "".join(we).strip()

산출

.Tx5000.
..Tx5000

관련 정보