![한 행에서 패턴을 찾아 다른 행에서 패턴 바꾸기](https://linux55.com/image/143959/%ED%95%9C%20%ED%96%89%EC%97%90%EC%84%9C%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EC%B0%BE%EC%95%84%20%EB%8B%A4%EB%A5%B8%20%ED%96%89%EC%97%90%EC%84%9C%20%ED%8C%A8%ED%84%B4%20%EB%B0%94%EA%BE%B8%EA%B8%B0.png)
다음과 같이 로컬 소프트 링크 경로가 있는 파일이 있습니다.
./tech/finegrain/DUALDFTIO/synopsys/DUALDFTIO.TSMC7N.db
./tech/finegrain/ESD18V/synopsys/ESD18V.TSMC7N.db
디렉토리의 원래 경로는 얻지만 파일 경로는 얻지 못합니다. 이 경우까지 정리하면 다음과 같다.
/proj/br_ccd_lib/macro/DUALDFTIO/0/synopsys
/proj/br_ccd_lib/macro/ESD18V/0/synopsys
synopsys
이제 첫 번째 줄 세트 뒤에 텍스트를 가져온 다음 synopsys
두 번째 줄 세트 뒤에 텍스트를 추가하고 싶습니다 . 위의 대체/추가를 어떻게 수행할 수 있습니까?
O/p는 다음과 같아야 합니다.
/proj/br_ccd_lib/macro/DUALDFTIO/0/synopsys/DUALDFTIO.TSMC7N.db
/proj/br_ccd_lib/macro/ESD18V/0/synopsys/ESD18V.TSMC7N.db
답변1
로컬 소프트 링크 경로를 이름이 지정된 파일에 입력 local.txt
하고 원본 경로를 이름이 지정된 파일에 입력 original
한 후 다음 명령을 실행할 수 있습니다.
paste original.txt local.txt | sed 's/synopsys.*synopsys/synopsys/' | sed 's/.db/.ssg.rev1d0u2p2.072v.0c.TSMC7N_1P13M1X1XA1YA5Y2YY2Z1ALRDL.db/'
/proj/br_ccd_lib/macro/DUALDFTIO/0/synopsys/DUALDFTIO.TSMC7N.ssg.rev1d0u2p2.072v.0c.TSMC7N_1P13M1X1XA1YA5Y2YY2Z1ALRDL.db
/proj/br_ccd_lib/macro/ESD18V/0/synopsys/ESD18V.TSMC7N.ssg.rev1d0u2p2.072v.0c.TSMC7N_1P13M1X1XA1YA5Y2YY2Z1ALRDL.db
이 솔루션은 파일의 모든 경로가 local.txt
로 끝나고 .db
local.txt의 모든 경로가 다음과 동일하다고 가정합니다.original.txt