![テキストファイルから変数の終わりを削除する](https://linux33.com/image/137559/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8B%E3%82%89%E5%A4%89%E6%95%B0%E3%81%AE%E7%B5%82%E3%82%8F%E3%82%8A%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B.png)
-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
これにより、各行が-
ダッシュで区切られ、最後のフィールドが削除され、残りのフィールドが印刷され、再びダッシュが追加されます。