-xyz.mp4
스크립트를 사용하여 마지막 것을 제거하는 방법텍스트파일 목록.
text
이제 변경해야 할 변경 사항이 많이 있습니다 .
55363642b-b13218-4cb0-8334-546565346-384.mp4
gfdggwg-e1321-4qwe-9ewq-de32155139d8-360.mp4
도착하다
55363642b-b13218-4cb0-8334-546565346
gfdggwg-e1321-4qwe-9ewq-de32155139d8
답변1
$ sed 's/-[^-]*\.mp4$//' file
55363642b-b13218-4cb0-8334-546565346
gfdggwg-e1321-4qwe-9ewq-de32155139d8
이 sed
표현식은 줄 맨 끝에 s/-[^-]*\.mp4$//
대시와 대시가 아닌 숫자, 점, 문자열이 뒤따르는 대체 표현식입니다 . mp4
일치하는 텍스트가 삭제됩니다.
변경 사항을 적용하려면 -i
다음 플래그를 사용하세요 sed
(단, 올바른 결과를 보장하기 위해 먼저 실행하지 마세요).
sed -i 's/-[^-]*\.mp4$//' file
이것이 파일 이름이라면 실제 파일을 반복해 보겠습니다.
for mp4file in *.mp4; do
printf 'The truncated name is "%s"\n' "${mp4file%-*.mp4}"
done
매개변수 대체는 ${mp4file%-*.mp4}
파일 이름으로 확장되며 -*.mp4
일치하는 가장 짧은 문자열은 끝에서 제거됩니다.
답변2
sed
해결책. 하이픈과 3개의 문자, .mp4, 줄 끝($)을 찾아 아무것도 바꾸지 않습니다.
"file"을 읽고 "newfile" 파일에 더 짧은 이름을 씁니다.
sed 's/-...\.mp4$//g' file >newfile
또는 그 자리에서 "파일"을 편집하십시오.
sed -i 's/-...\.mp4$//g' file
답변3
사용 awk
:
awk -F- -vOFS=- 'NF{NF-=1};1' file
그러면 각 줄이 -
대시로 구분되고 마지막 필드가 제거된 다음 나머지 필드가 인쇄되고 다시 대시가 추가됩니다.