텍스트 파일에서 변수 끝 제거

텍스트 파일에서 변수 끝 제거

-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

그러면 각 줄이 -대시로 구분되고 마지막 필드가 제거된 다음 나머지 필드가 인쇄되고 다시 대시가 추가됩니다.

관련 정보