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

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

1
正規表現(Big | Small)(State | City)-[0-9] * \。csvに相当する.gitignoreパターンは何ですか
私は私の.gitignore似たようなもので立ち往生している正規表現を持っています: (Big|Small)(State|City)-[0-9]*\.csv 動作しなかったので、RegexLab.NETに対してテストしました。 それからgitignoreのマニュアルページを見つけ、gitignoreは正規表現ではなくfnmatch(3)を使用していることを知りました。 ただし、fnmatchにはキャプチャグループに相当するものがないようです。これは実行可能ですか、またはこれを3行に分割する必要がありますか?

2
Grepの単語境界
GNUドキュメントに準拠: ‘\<’ Match the empty string at the beginning of word. ‘\>’ Match the empty string at the end of word. 私の/ etc / fstabは次のようになります。 /dev/sdb1 /media/fresh ext2 defaults 0 0 / media / freshの存在に対してgrepがTRUE / FALSEを返すようにします。私は使用しよう\<としました\>が、うまくいきませんでした。どうして? egrep '\</media/fresh\>' /etc/fstab 回避策: egrep '[[:blank:]]/media/fresh[[:blank:]]' /etc/fstab しかし、それはいように見えます。 私のgrepは2.5.1です

2
Bash正規表現キャプチャグループ
文字列から複数の英数字値(この数値は異なる場合があります)を照合し、bashキャプチャグループ配列に保存しようとしています。しかし、私は最初の一致のみを取得しています: mystring1='<link rel="self" href="/unix//api/clouds/1/instances/1BBBBBB"/> dsf <link rel="self" href="/unix//api/clouds/1/instances/2AAAAAAA"/>' regex='/instances/([A-Z0-9]+)' [[ $mystring1 =~ $regex ]] echo ${BASH_REMATCH[1]} 1BBBBBB echo ${BASH_REMATCH[2]} ご覧のとおり、最初に探している値と一致しますが、2番目の値とは一致しません。

5
正規表現では、どの文字をエスケープする必要がありますか?
一般的に、正規表現のどの文字をエスケープする必要がありますか? たとえば、次は構文的に正しくありません。 echo '[]' | grep '[]' grep: Unmatched [ or [^ ただし、これは構文的に正しいです: echo '[]' | grep '\[]' [] 正規表現で文字をエスケープする必要があるドキュメントと、そうでないドキュメントはありますか?



2
awkでの大文字と小文字を区別しない検索
awkを使用してキーワードを検索する必要がありますが、大文字と小文字を区別しない(大文字と小文字を区別しない)検索を実行したいです。 最良のアプローチは、検索語(「キーワード」)とawkが同時に読んでいるターゲット行の両方を大文字にすることだと思います。この質問から、私toupperはすべて大文字で印刷する方法を使用しますが、マッチでそれを使用する方法がわかりません。なぜなら、その答えは単に印刷を示し、大文字のテキストを変数に残さないからです。 この入力が与えられた例を次に示します。 blablabla &&&Key Word&&& I want all these text and numbers 123 and chars !"£$%& as output &&&KEY WORD&&& blablabla この出力が欲しい: I want all these text and numbers 123 and chars !"£$%& as output これは私が持っているものですが、追加する方法がわかりませんtoupper: awk "BEGIN {p=0}; /&&&key word&&&/ { p = ! p ; next } …

1
テキストをsedで置き換え、元のテキストの一部を保持する
変換しようとしています <id>1</id> <Name>ENTERPRISE RESOURCE PLANNING</Name> に: <column name="id">1</column> <column name="Name">ENTERPRISE RESOURCE PLANNING</column> 仕事に最適なツールはになるsedと思いますが、元のテキストの一部を置換部分に保持する方法がわかりません。 私が行った場合: $ sed -i 's/<.*>.*<.*>/<column name="\\1">\\2<\/column>/g' filename.xml 出力は次のとおりです。 <column name="\1">\2</column> <column name="\1">\2</column> または、内から同様のことを行いvi、出力します: <column name=""></column> <column name=""></column> どのように私はそれがそうすることを作ることができる\1とは、\2元の値に戻って置換されていますか?

3
.svn /ディレクトリを無視して、残りを除く特定のファイルを再帰的にrsync
rsync一部のファイルを共有から別のファイルにコピーするために使用しています。 再帰的に、私はする必要があります: コピー元から削除されたコピー先のファイルを削除する 同期.phpと.jsファイルのみ 他のすべてのファイルタイプを除外する .svn/宛先のディレクトリを削除しないでください これを使用する場合: rsync -zavC --delete --include='*.php' --include='*.js' --exclude="*" \ /origin /destination その後、フォルダーだけでなくすべてのファイルが除外されるrsyncためexclude="*"、再帰的ではありません。 追加する--include="*/"と、.svn/ディレクトリが削除されます(これも含まれます)。 このマインドブラストのジレンマをどのように解決できますか? uname -a: Linux tux 3.9.2-1-ARCH#1 SMP PREEMPT Sat May 11 20:31:08 CEST 2013 x86_64 GNU / Linux rsync バージョン: rsync 3.0.9-6

5
SED正規表現との貪欲でない一致(perlの。*?をエミュレート)
を使用sedして、文字列内の最初ABと最初のAC(包括的)の間にあるものをに置き換えXXXます。 以下の場合の例、私はこの文字列を持っている(この文字列はテスト用です): ssABteAstACABnnACss そして、次のような出力が欲しいです:ssXXXABnnACss。 私はこれをしましたperl: $ echo 'ssABteAstACABnnACss' | perl -pe 's/AB.*?AC/XXX/' ssXXXABnnACss しかし、私はそれを実装したいと思いsedます。以下(Perl互換の正規表現を使用)は機能しません。 $ echo 'ssABteAstACABnnACss' | sed -re 's/AB.*?AC/XXX/' ssXXXss

3
awk繰り返し{n}が機能していません
繰り返し記号{n}を使用して行を印刷しようとしていますが、機能していません。にとって。たとえば、長さが4文字のすべての行を印刷したい awk '/^.{4}$/' test_data 上記のコードはそれを印刷していません。繰り返し記号を使用できるように修正する方法は?私のような選択肢を知っているawk '/^....$/' test_dataし、awk 'length ==3 ' test_data


4
2つの特定の文字または文字列の間のテキストを検索する
次のような行があるとしましょう: *[234]* *[23]* *[1453]* where *は任意の文字列を表します(形式の文字列を除く[number])。コマンドラインユーティリティを使用してこれらの行を解析し、括弧内の数値を抽出するにはどうすればよいですか? より一般的には、このことは、これらのツールのcut、sed、grepまたはawk、そのような作業に適しているでしょうか?

7
正規表現を視覚的に構築するためのソフトウェアですか?
スクリプトで使用するために正規表現を頻繁に作成する必要があります(ほとんどがで使用する場合sed)が、正規表現が非常に複雑になり、理解や編集が難しくなることがあります。正規表現のコードを視覚的に作成し、コピーしてスクリプトに貼り付けることができるソフトウェアはありますか?


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