これはおそらくSedとシェルのスクリプト構文の問題とRegexです。 (編集:多分I/O発行、bashシェル内のファイルを読み取ることが、実際.txt
ファイルが所望のように変化しなかった場合、正規表現は、仕事のように)いくつかの自然言語処理のため.txt
ファイルを準備しようとSed Regex OSXはローマ数字を見つけ、空文字列に置き換えます。エラー "unterminated substitute pattern"
を作業。シェークスピアのソネットを含むプレーンテキストファイルのローマ数字を削除することを希望しました。各ソネットは小文字を含めて個々のソネットのタイトルを表すIX.
とXVIII.
のようなローマ数字で始まります。テキストintput
例:
XXV.
Let those who are in favour with their stars
Of public honour and proud titles boast,
所望の出力:
Let those who are in favour with their stars
Of public honour and proud titles boast,
this questionの例に続いて、私はターミナルbashシェルで、次のすべてのコマンドを試してみました:
$ sed -i 's/[IVXLC]{1,}[.]//g' sonnets.txt
$ sed -i 's/[IVXLC]{1,}[.]/^$/g' sonnets.txt
$ sed -i 's/[IVXLC]{1,}[.]/()/g' sonnets.txt
$ sed -i 's/[IVXLC]{1,}[.]/[]/g' sonnets.txt
アイデアは、空の文字列と一致するものがすべて交換しました。
$ sed -i 's/[IVXLC]{1,}[.]/^ $/g' sonnets.txt
ありません運:それは動作しませんでしたので、私はスペース文字との一致を交換しようとしました。上記のすべてのコマンドは、同じエラーを返しました:
sed: 1: "sonnets.txt": unterminated substitute pattern
私はhttps://regexr.com/に「検索」フィールドに正規表現をテストし、正しいように見えました。ターゲットファイルは作業ディレクトリの中にあります。どのようなアイデアが間違っていた? Sedコマンドの "replace"フィールドにはどのような文字を使用する必要がありますか?正規表現やSedコマンドを変更する必要がありますか?
サンプルテキストを貼り付けることはできますか?入力とはどのようなもので、どのように出力が見えるようにしますか? ? –
'{'と '}'をエスケープする必要があると思います。 '\ {'と '\}'を使います。大括弧で囲まれた括弧も確実にエスケープする必要があります。 –
'{} []'はhttps://regexr.com/でテストするときに問題にはならないと思われます – Elan