필자는 Perl에 ls
을 파이핑 중입니다. 줄 끝에 ".mp4.mp3"이 오는 문자가있는 줄을 찾습니다. 나는 라인의 중간에서 ".mp4"를 제거하고 싶다. 정규식은 ".mp4.mp3"에 실행될 때 라인을 소비 중지 있도록펄 정규식 비 탐욕적 인 일치
ls | perl -pe 's|(.+?)\.mp4\.mp3$|\1\.mp3|'
것은 내가 아닌 욕심 매칭을 사용하고 있습니다 : 여기 내 명령입니다. 나는 이것이 ".mp4.mp3"으로 끝나는 라인에서만 작동 할 것으로 기대할 것입니다. 그러나 그것들 안에 ".mp4"가없는 라인들에서 작동합니다.
입력 : foo. bar.mp4.mp3
예상 출력 : foo. bar.mp3
eason 당신은 단지'.mp4.mp3'을'.mp3'으로 대체하지 않습니까? – Laurel
샘플 입력과 예상 및 실제 출력 – ysth
은 항상 oneliner에서 경고를 활성화해야합니다. 여기서 실제 문제는 아니지만 대체 오른쪽에 $ 1 대신 \ 1을 사용하면 오류가 발생합니다. – ysth