0

Linux レシーバーを使用しており、録音の名前を変更したいと考えています。録音は次のようになります 20131018 2245 - Channel 1 - Name of the movie.ts

「映画の名前.ts」だけを取得したい。次の sed- コマンドを使用して、これを簡単に実行できます。

echo 20131018 2245 - Channel 1 - Name of the movie.ts|sed 's!\(.*\) - \(.*\) - \(.*\)!\3!'

ただし、ムービーの名前にセパレーター「 - 」も含まれている場合は、セパレーターで切り取られます。

echo 20131018 2245 - Channel 1 - Name of another movie - Second part.ts|sed 's!\(.*\) - \(.*\) - \(.*\)!\3!'

出力します:

別の映画の名前

それ以外の

別の映画の名前 - 第二部.ts

どうすればこれを達成できますか?

ありがとう

4

3 に答える 3

2

文字列を分割するには、'cut' コマンドを使用することをお勧めします。

置き換える文字列:

filename='20131018 2245 - Channel 1 - Name of another movie - Second part.ts'

適用するコマンド:

echo $filename | cut -d\- -f3-
  • -d: セパレーターを定義します
  • -f: 抽出する列を定義します

元:

  • -f3 : 3 列目を返す
  • -f3-5 : 列 3 から 5 を返します
  • -f1,3- : 1 列目と 3 列目を行末に戻す
于 2013-10-25T16:44:58.960 に答える