タグ付けされた質問 「regular-expression」

正規表現は、文字列内の文字のパターンを照合する手段です。

3
grepで正規表現が機能しない
私はこの正規表現を持っています: (?<=prefix).*$ これは、文字列「prefix」に続く任意の文字を返し、オンライン正規表現エンジン(例:https : //regex101.com)で正常に動作します。問題は、bashでその正規表現を使用する場合です。 grep '(?<=prefix).*$' <<< prefixSTRING 何にも一致しません。その正規表現がgrepで機能しないのはなぜですか?

2
正規表現量指定子を使用したコマンドの検索(例:{1,2})
1〜99の数字で終わるすべてのファイルを検索するが、他のすべてを除外する検索コマンド文字列を作成しようとしています。 例えば私が見つけたいmyfile1 myfile99なくmyfile456ないmyfilebackup 私が考えている正規表現myfile[1-9]{1,2}はありますが、これをfindで動作させることはできません。 find . -regex '.*myfile[0-9]{1,2}' または find . -iname 'myfile[0-9]{1,2}' 私が見ることができるのは、機能{1,2}していない部分です。 (ちなみに-name -regex交換可能に使用できますか?) 任意の助けに感謝します。

3
sedまたはawkを再度呼び出さずに、文字列からドット文字を削除するにはどうすればよいですか?
次のhostlist.txtようなテキストを含むというファイルがあります。 host1.mydomain.com host2.mydomain.com anotherhost www.mydomain.com login.mydomain.com somehost host3.mydomain.com 次の小さなスクリプトがあります。 #!/usr/local/bin/bash while read host; do dig +search @ns1.mydomain.com $host ALL \ | sed -n '/;; ANSWER SECTION:/{n;p;}'; done <hostlist.txt \ | gawk '{print $1","$NF}' >fqdn-ip.csv 出力先fqdn-ip.csv: host1.mydomain.com.,10.0.0.1 host2.mydomain.com.,10.0.0.2 anotherhost.internal.mydomain.com.,10.0.0.11 www.mydomain.com.,10.0.0.10 login.mydomain.com.,10.0.0.12 somehost.internal.mydomain.com.,10.0.0.13 host3.mydomain.com.,10.0.0.3 私の質問は.、コンマの直前を削除せずにsed、gawk再度呼び出すことはできませんか?ドットを取り除く既存の呼び出しsedまたはgawk呼び出しで実行できるステップはありますか? hostlist.txt 数千のホストが含まれるので、スクリプトを高速かつ効率的にしたいです。


4
.ssh / configの正規表現
職場では、よくqc01- qc12、hc01- hc10などの一般的な命名スキームに従うホストにログインする必要があります。これらはすべて、私のラップトップで同じ設定値を取得する必要があります.ssh/config。もちろん、ホストqc*とのエントリを使用することもできますが、hc*代わりに正規表現を使用することが何らかの形で可能かどうか疑問に思っていますか?

2
コマンドラインで正規表現のバックスラッシュをエスケープするために必要なバックスラッシュの数
私は最近、コマンドラインでいくつかの正規表現に問題があり、バックスラッシュを一致させるために、異なる数の文字を使用できることがわかりました。この数は、正規表現に使用される引用符(なし、単一引用符、二重引用符)に依存します。意味については、次のbashセッションを参照してください。 echo "#ab\\cd" > file grep -E ab\cd file grep -E ab\\cd file grep -E ab\\\cd file grep -E ab\\\\cd file #ab\cd grep -E ab\\\\\cd file #ab\cd grep -E ab\\\\\\cd file #ab\cd grep -E ab\\\\\\\cd file #ab\cd grep -E ab\\\\\\\\cd file grep -E "ab\cd" file grep -E "ab\\cd" file grep …


3
bashはどの正規表現エンジンタイプを使用しますか?
RegExバディを使用して、正規表現のプロトタイプとデバッグを行っています。RegExバディを使用すると、さまざまな正規表現エンジンタイプ(.NET、Java、Perl、GNU BRE、GNU ERE、POSIX、BRE、POSIX EREなど)から選択できます。 bashはどの正規表現エンジンを使用しますか(例:ifand caseステートメント)?Centos 5.5 32ビットとbash 3.2.25(1)を実行しています: [kevin@mon01 scratch]$ bash --version GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. 私はそれがGNU BREまたはGNU EREになると思いますか?

2
sedで複数の再利用のために複雑な正規表現をどのように保存しますか?
を使用するsed場合、ファイル内で2回一致させる必要があるかなり複雑で複雑な正規表現を作成することがよくあります。この正規表現を保存して2回参照する方法はありますか? たぶんこんな感じ? sed ' complicated_regex=/^(([a-f0-9]{32})+([a-zA-Z0-9=]{{$i}})?)+$/ s/complicated_regex:complicated_regex/simple-output/ ' my_file 更新:回答により、bash変数を使用するソリューションが提示されました。これは機能しません。与えられたtest.txt。 #test.txt foo bar bar foo そしてスクリプト #!/bin/bash VALUE='foo \([a-z]\+\)' sed 's/"${VALUE}"/foo happy \1/' test.txt これは出力を生成するはずです foo happy bar bar foo しかし、代わりにエラーが発生します sed: -e expression #1, char 24: invalid reference \1 on `s' command's RHS

3
Bash =〜regexおよびhttps://regex101.com/
https://regex101.com/を使用して、文字列内の最初のIPアドレスを返す正規表現を作成しました。 RegExp: (?:\d{1,3}\.)+(?:\d{1,3}) 区切り文字を含むRegExp: /(?:\d{1,3}\.)+(?:\d{1,3})/ 次のテスト文字列で: eu-west 140.243.64.99 次の完全一致を返します。 140.243.64.99 アンカーなどで何を試しても、次のbashスクリプトは生成された正規表現では機能しません。 temp="eu-west 140.243.64.99 " regexp="(?:\d{1,3}\.)+(?:\d{1,3})" if [[ $temp =~ $regexp ]]; then echo "found a match" else echo "No IP address returned" fi

6
セミランダム文字列から完全なURLを抽出/解析するにはどうすればよいですか?
ランダムな短い文字列から完全なURL(およびURLのみ)をbashで解析/抽出したいのですが。 例: bob, the address is http://www.google.com または https://foo.com/category/example.html is up または Error 123 occurred at http://bit.ly/~1223456677878 または Stats are up: https://foo1234.net/report.jpg 使ってみcat foo_output | egrep -o "https?://[\w'-\.]*\s"たがうまくいかなかった。

2
正規表現で[[.ch。]]はどういう意味ですか?
代替タイトル:POSIX準拠の正規表現の「照合シーケンス」または「照合要素」とは何ですか? 正確な技術的定義はPOSIX仕様のセクション9.3.5でリストの項目4として見つかりましたが、私にはあまり明確ではありません。 私は例と説明については、ウェブ上の周りGoogleで検索していない思い付い完全に手ぶらで、間違いなくありません啓発します。 私が得た唯一のことは、特定の状況では、長さを比較し、「最長一致」が何であるかを決定するために、正規表現に複数の文字を単一の文字として処理させることができるということです(正規表現は貪欲であり、可能な限り最長の一致を返します)。 それだけですか?使い方がわからないのですが、理解が不十分だと思います。 正規表現の「照合」とは実際には何ですか? そして[[.ch.]]、POSIX仕様の例であるは、これとどのように関連していますか?

5
最初の行が特定のパターンに一致する場合にのみファイルの内容を印刷する方法は?
スクリプトを作成しています。ファイルの最初の行が特定のパターンに一致するかどうかを確認し、一致する場合はファイルを出力します。どうすればこれを達成できますか? パターンを確認するにはどうすればよいですか?パターンをチェックし、出力に基づいて何かを行う方法はありますか? 編集:この質問を見てください:https : //stackoverflow.com/questions/5536018/how-to-get-match-regex-pattern-using-awk-from-file このようなものが欲しいのですが、どれもうまくいきませんでした。基本的に、最初の行が正規表現パターンと一致するかどうかを確認し、それに基づいてファイルの行を出力します。

3
Yum正規表現またはワイルドカード検索?
Fedora ドキュメントは言う: 5.2。高度な検索 パッケージの名前がわからない場合は、検索を使用するか、オプションを提供します。または、yum検索オプションでワイルドカードまたは正規表現を使用して、検索基準を広げます。 まあ、最初に私の正規表現のない既知の構文はでは動作しないであろうから、これは単に間違っているか、古くなっていると思ったyum searchが、その後、私が見つかりましたこの:yum search [cl-*]たとえば。しかし、それは別世界の何かをします。名前または説明に「c」も「l」も含まれていないものを検索します。(私が欲しかったのは、cl-.*正規表現で名前が一致するすべてのパッケージを見つけることです。 またgrep、yumの結果をにパイプすることを提案している人もほとんどいませんでした。もちろん、問題を解決しました。しかし、原則として、角かっこ内の処理が何をするのかを知りたいのです。yum実際に正規表現で検索できる場合はどうなりますか?

3
バッシュグロビングの歴史
Bashの「グロビング」と正規表現が同一でない歴史的な理由はありますか?たとえば、Bash [1-2]*では1または2で始まり、その後に何かが続くものに一致すると思いますが、正規表現[1-2]*は1と2のシーケンスのみに一致します。私のBashスクリプトとREGEX fooはどちらも非常に弱く、私はこれらの違いに関連する問題に定期的に遭遇しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.