移行プロセスでは、bashスクリプトでいくつかの代替操作を実行する必要があります。
したがって、私の.txtファイルには次の引用符があります。
[[File:My Image.png|400px|thumb|center|My Image]]
[[File:My Image.png|400px|thumb|center]]
[[File:My Image.png|400px|thumb]]
[[File:My Image.png|400px]]
[[File:My Image.png]]
私がしなければならないことは、これらのすべてのイベントを次の行に置き換えることです(したがって、もはやサイズ、説明、またはその他の情報はありません)。
[[File:My Image.png]]
それで、すべての画像名を抽出するためにPCRE正規表現を書いてみました。
/File:(.*\..{3})/g
.txtファイルで一致するすべてのエントリを見つけ、正規表現を使用して画像名を抽出するために、次の最終コマンドを作成しました。
find . -name "*.txt" | xargs perl -i -p -e 's/File:(.*\..{3})/$1/g'
しかし、いくつかの問題が発生しました。
- 間違い:
xargs: 終わらない引用
- 最後に、すべての項目(全行)を抽出された画像名に置き換える方法がわかりません。
PS:私はMacOSシステムでbash v4を使用しています。
ベストアンサー1
私は書いた新しい正規表現全体を一致させ[[...]]
、維持したいだけに交換してくれます。ファイル名にパイプ|
文字や終端が含まれていないとします]]
。で問題を再現することはできませんが、とにかく以下はLinuxで動作するsオプションxargs
に置き換えられました。find
-exec
find . -name "*.txt" -exec perl -i -pe 's/(\[\[File:[^|]*).*?(\]\])/$1$2/g' '{}' +