2017-11-24 23 views
1

교체하려고 예상대로 작동하지 "/ 데이터/kollman/appion/*// 현미경 relion" "현미경"나오지 와일드 카드

sed -i 's/\/data\/kollman\/appion\/.*\/relion\/micrographs/micrographs/g' micrographs_all_gctf.star 

각 행은 두 개의 수정을 필요로.

micrographs/00001_nonDW.mrc micrographs/00001_nonDW.ctf:mrc 18326.289062 19408.296875 74.539665 120.000000  2.120000  0.200000 87500.000000 14.000000 -0.032973  3.656274 
micrographs/00002_nonDW.mrc micrographs/00002_nonDW.ctf:mrc 19867.357422 20695.939453 48.760956 120.000000  2.120000  0.200000 87500.000000 14.000000 -0.034282  3.727132 

을 대신, 내가지고있어 결과는 이것이다 : 필요

/data/kollman/appion/17nov14d/relion/micrographs/00001_nonDW.mrc /data/kollman/appion/17nov14d/relion/micrographs/00001_nonDW.ctf:mrc 18326.289062 19408.296875 74.539665 120.000000  2.120000  0.200000 87500.000000 14.000000 -0.032973  3.656274 
/data/kollman/appion/17nov14d/relion/micrographs/00002_nonDW.mrc /data/kollman/appion/17nov14d/relion/micrographs/00002_nonDW.ctf:mrc 19867.357422 20695.939453 48.760956 120.000000  2.120000  0.200000 87500.000000 14.000000 -0.034282  3.727132 
이 설정되어있을

micrographs/00001_nonDW.ctf:mrc 18326.289062 19408.296875 74.539665 120.000000  2.120000  0.200000 87500.000000 14.000000 -0.032973  3.656274 
micrographs/00002_nonDW.ctf:mrc 19867.357422 20695.939453 48.760956 120.000000  2.120000  0.200000 87500.000000 14.000000 -0.034282  3.727132 

문제는 난 방법이있을 것 같다 여기서 와일드 카드 사용. 나는이 명령이 모든 폴더 구조에 일반화 될 수 있기 때문에 폴더 구조의 해당 부분이 항상 달라지기 때문에 필요하다. 별표는 항상 변경되는 날짜입니다.

어쨌든 와일드 카드는 날짜를 예상 한대로 바꿉니다. 그러나 날짜가 끝날 때까지 확장되어 있고 교체가 필요한 두 번째 인스턴스로 건너 뛴 것처럼 보입니다. 결과는 각 행에서 파일 구조의 항목 하나를 삭제합니다.

답변

0

와일드 카드 .*이 (가) /relion/micrographs의 두 번째 인스턴스까지 모든 문자와 일치합니다. 보다 결정적인 패턴이 필요합니다. 당신은 탈출 할 필요가 없도록

또한

는 다른 나오지도 표현의 구분 기호를 사용하는 각 / :

sed -E 's#/data/kollman/appion/[^ ]+/relion/micrographs#micrographs#g' file 
  • 문자 클래스 [^ ] 우리는 비 공백 문자와 일치 방지 있는지 확인하게 두 번째 인스턴스 /relion/micrographs까지 모든 문자를 삼킬 수있는 욕심 많은 일치