2016-09-27 7 views
1

次のコードを使用して、string1またはstring2と一致する行を置き換えています。それは、HTMLテキストで正常に正常に動作しています。 (私はregexとhtmlを使用することは歓迎されていることを知っています。)しかし、特定のファイルでは動作しません。SED複数の文字列をすべてのテキストファイルにマッチさせていますが完了しません

私は適切な行末を確認し、コードをダブルチェックしてみました。実際のファイルを共有することはできません.HTML行がたくさんあります。

cat file.txt | sed 's/.*\(string1\|string2\).*/match/' 

提供された詳細を使用してファイルを使用しないで、このコマンドを実行する理由を確認できますか?あなたの洞察は非常に高く評価されます。

アップデート:ここで

があるいくつかの他のアイデア:

  • 有力でした空白または空白行は、それを引き起こしますか?
  • 大きな括弧や特殊文字が原因ですか?
  • SEDにハングアップする何かがありますが、同様の経験がありますか?
  • SEDをハングアップさせる原因となる非常に長い行かもしれませんか?

アップデート2:私は1つの大規模な長い行があることを考え出し

- 494000の文字が。この行は主にCSSコードと詳細です。

今、私は疑問に思っています...それは長い行か、その行の中の文字ですか?

+0

ノードを使用できますか?もしそうなら、あなたは 'document.querySelector'を使うことができます。 – Enijar

+0

私はできると思いますが、私は真っ直ぐなsed、awkまたは他のbashコマンドを使うのが本当に好きです。 – DomainsFeatured

+0

十分ですが、HTMLファイルのサンプルの一部を教えてください。 – Enijar

答えて

1

私はこの回答を提供するのに多少恥ずかしいですが、私は本当に問題のトラブルシューティングに時間を費やして、皆さんと協力しています。うまくいけば、誰かがSEDの吊り下げに問題があるとすれば、これは役に立ちます:

ファイル内の1行に400K文字以上が含まれているため、SEDが長時間にわたってハングする原因となります。これが問題でした。回線が短縮されると、処理に要する時間が短縮されました。これは実行し、最初の行を短くするには、次のコマンドを使用して固定することができます。

cat file.txt | awk 'length($0)<1000' | sed 's/.*\(string1\|string2\).*/match/' 

SEDコマンドで何かをマッチングし、それだけでぶら下がっています場合、これはあなたの問題を解決します。

(これを反映するように質問タイトルが更新されます)。

+0

入力を小さな行で 'cat file.txt | fold -w 1000 | sed ... '?長い線の部分でsedは速く働いていますか? string1/string2はどのように埋められますか? a/insideを持つ変数はありますか? –

+0

こんにちはWalter、はい、sedは長い行の部分で速く動作します。行にString1/2を置き換える必要がありますが、この場合、1K文字を超える行は関係ありません。そして、いいえ、それらは変数ではありません。質問ありがとう:-) – DomainsFeatured

関連する問題