ファイルのテキストを置き換える

ファイルのテキストを置き換える

数字を含むすべてのテキストを置き換えてその数字を削除する便利なコマンドはありますか?
前任者:

myimages-202x250.jpg
width="202" heignt="250" 


次に交換

myimages.jpg
width="217" height="317" 

sedを試しましたが、うまくいきません

sed -i 's/*-*x*.jpg/.jpg/g' myfile.sql

答え1

@Costasが指摘したように、globbingモードを使用してsedBREを使用しています。一般的な表現sedのオプションが使用されている場合は-rERE)。

コマンドは次のようにする必要があります。

sed -i -r 's/-[0-9]+x[0-9]+\.jpg/.jpg/g' myfile.sql

説明する:

  • [0-9]「すべての数字」(0、1、2、3、4、5、6、7、8、9)を意味します。
  • +「1つ以上の以前の原子」を意味します(EREでのみ特別な意味を持つため、-rスイッチが必要です)。+

したがって、パターンは-[0-9]+x[0-9]+\.jpg次のことを意味します。 「リテラル、-1つ以上の数字、リテラルx、1つ以上の数字、リテラル.(REではバックスラッシュが特殊文字なので重要です.)、その後のテキストjpg

編集する:

明確に説明すると、次のように目的のタスクが実行されます。

sed -i -r -e 's/-[0-9]+x[0-9]+\.jpg/.jpg/g' -e 's/width="[0-9]+" *height="[0-9]+"/width="217" height="317"/' myfile.sql

追加されたパターンはwidth="[0-9]+" *height="[0-9]+"上記と同じ原理に基づいており、ハードコードされた文字列に置き換えられますwidth="217" height="317"

関連情報