テキストファイルから変数の終わりを削除する

テキストファイルから変数の終わりを削除する

-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

これにより、各行が-ダッシュで区切られ、最後のフィールドが削除され、残りのフィールドが印刷され、再びダッシュが追加されます。

関連情報