GoGPT Best VPN GoSearch

OnWorksファビコン

sgrep - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して OnWorks 無料ホスティング プロバイダーで sgrep を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド sgrep です。

プログラム:

NAME


sgrep - ファイル内で構造化パターンを検索します。

SYNOPSIS


スグレップ [-acddhiilnnpqssttv] [-g オプション] [-O ファイル名] [-o "形式でアーカイブしたプロジェクトを保存します."] [-p プリプロセッサ] [-w
チャリオット リスト] [-x ファイル名] [-e] 表現 [ファイル名 ...]

スグレップ [-acddhiilnnpqssttv] [-g オプション] [-O ファイル名] [-o "形式でアーカイブしたプロジェクトを保存します."] [-p プリプロセッサ] [-w
チャリオット リスト] [-x ファイル名] -f ファイル名 [-e 表現] [ファイル名 ...]

スグレップ [-acddhiilnnpqssttv] [-g オプション] [-O ファイル名] [-o "形式でアーカイブしたプロジェクトを保存します."] [-p プリプロセッサ] [-w
チャリオット リスト] [-x ファイル名] -f ファイル名 -F ファイル名 [-e 表現]

スグレップ -h

DESCRIPTION


スグレップ (構造化された grep) 検索するためのツールです 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. ファイル とフィルタリング 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. ストリーム
構造基準を使用します。 sgrep のデータ モデルは以下に基づいています。 地域、非
テキストの空の部分文字列。 地域 通常、定数文字列の出現であるか、
意味のあるテキスト要素。いくつかの区切り文字列を通じて認識できます。 地域
任意の長さ、任意の重複、および任意の入れ子にすることができます。

スグレップ と呼ばれるパターンを使用します 地域 表現 入力テキストのどの領域を表現するか
標準出力に出力されます。 地域の選択は相互に基づいて行われます。 封じ込め  
発注 条件 領域の式で表される領域。

地域 表現 デフォルトでは最初にファイルから読み取られます $HOME/.sgreprc、 あるいはそうでない場合
存在します、ファイルから /usr/lib/sgreprc、 そしてコマンドラインから。 異なる動作が可能
コマンド ライン オプションで指定できます。

入力 ファイル XNUMX つずつ処理されます (つまり、領域はファイルの境界を越えることはできません)。
ただし、 -S フラグが与えられている場合、 スグレップ 入力の連結を取得します
ファイルを入力テキストとして使用します。 入力ファイルが指定されていない場合は、 スグレップ 標準入力を読み取ります。
ファイル名にハイフン「-」を付けることで、標準入力を入力ファイルとして指定することもできます。

選択された領域は、開始位置の昇順に出力されます。 複数の場合
出力領域が重複している場合、デフォルトでは、すべてをカバーする最小領域が出力されます。
それぞれを個別に出力するのではなく。

OPTIONS


-a フィルタとして機能します。一致する領域を表示します。おそらく、
残りのテキストとインターリーブされた出力形式。 (説明を参照してください)
以下のオプション -o)。

-C 著作権表示を表示します。

-c 式に一致する領域の数のみを表示します。

-D 詳細な進行状況出力を表示します。 注: これはデバッグ目的のみに使用されます
sgrep の将来のバージョンでは機能しなくなる可能性があります。

-d 領域が重なっている場合やネストしている場合でも、一致する各領域を XNUMX 回表示します。

-e 表現
入力テキスト内で以下の出現箇所を検索します。 表現.

-f file
指定されたファイルから領域式を読み取ります。 ファイル名 - 標準入力を指します。

-F ファイル名
から入力ファイルのリストを読み取ります ファイル名 コマンドラインの代わりに

-g オプション
スキャナーのオプションを設定します。 オプション 次のいずれかになります。

sgml SGMLスキャナを使用する

HTML HTML スキャナーを使用します (現在は SGML スキャナーと同じです)

XML XMLスキャナを使用する

sgml-デバッグ
認識された SGML トークンを表示する

インクルードエンティティ
システムエンティティを自動的に含める

-h 短いヘルプを表示します。

-i フレーズの大文字と小文字の区別を無視します。

-I 最初のオプションとして指定すると、インデックス作成モードに切り替わります。

-l 長い出力形式: 各出力領域の前に、
リージョンの序数、リージョンが始まるファイルの名前、
バイト単位の領域の長さ、領域内の領域の開始位置と終了位置。
入力テキスト全体、ファイル内の領域の開始位置
開始位置と、終了を含むファイル内の領域の終了位置。

-N 最後の出力領域の後に改行を追加しないでください。

-n 読み取りを抑制する $HOME/.sgreprc or /usr/lib/sgreprc。

-O file
ファイルから出力形式を読み取ります。 以下の出力形式の説明を参照してください。

-o 形式でアーカイブしたプロジェクトを保存します.
出力形式を設定します。 形式は出力領域ごとに表示されます。
次のプレースホルダーが出現すると置換されます。

%f 領域の始まりを含むファイルの名前

%s 領域の開始位置

%e 領域の終了位置

%l バイト単位の領域の長さ (すなわち、 %e-%s+1)

%i ファイル内で領域が始まる領域の開始位置

%j ファイル内でリージョンが終了するリージョンの終了位置

%r 地域のテキスト。 「%r」はデフォルトの出力形式です。

%n 領域の序数を取得します

-P (前処理された) 領域式を実行せずに表示します。

-p プリプロセッサ
Apply プリプロセッサ 評価する前に領域式に適用します。

-S ストリームモード。 このオプションを使用すると、sgrep は入力ファイルを連続したものと見なします。
ストリームなので、領域はファイルの境界を越えて拡張できます。

sgrep -S ファイル_1 ... ファイル_n

に似ています

猫 ファイル_1 ... ファイル_n | スグレップ

ただし、後者は入力ストリームの一時ディスク ファイルを作成する点が異なります。 スグレップ
で実行すると、より多くのメモリを使用する可能性があります。 -S オプション、それ以降は解放できません
その内部領域には、各ファイルの処理間のリストが表示されます。

-s 短い出力形式 (デフォルト): 出力領域のテキストをフォーマットしません。
領域の重複部分を XNUMX 回だけ表示します。

-T 実行に関する統計を表示します。

-t 使用時間の表示。

-V バージョン情報を表示します。

-v 詳細モード。 何が起こっているかを示します。

-w チャリオット リスト
単語の認識に使用する文字のリストを設定します。

-x ファイル名
スキャナーの代わりに指定されたインデックス ファイルを使用します。 -S を意味します。

-- これ以上のオプションはありません。

オプションのリストは、環境変数の値としても指定できます。 SGREPOPT.

構文 OF 表現


領域式 -> 基本式
| 演算子_式

演算子_式 -> 領域_式 ['not'] 'in' Basic_expr
| region_expr ['not'] 'containing' Basic_expr
| region_expr ['not'] '等しい' Basic_expr
| region_expr 'または' Basic_expr
| region_expr「抽出中」basic_expr
| 地域式 '..' 基本式
| 地域式 '_.' 基本的な表現
| 地域式 '._' 基本式
| 地域式 '__' 基本式
| region_expr「引用」basic_expr
| 地域式 '_quote' 基本式
| 地域式 'quote_' 基本式
| 地域式 '_quote_' 基本式
| 'concat' '('region_expr ')'
| 'inner' '('region_expr ')'
| 'アウター' '(' リージョンエクスプレッション ')'
| '結合' '(' 整数 ',' 領域式 ')'

Basic_expr -> フレーズ
| '始める'
| '終わり'
| 「文字」
| 定数リスト
| '(' リージョン_式 ')'

フレーズ -> '"' char [ char ... ] '"'

constant_list -> '[' ']' | '[' 地域 ']'

地域 -> 地域
| 地域

領域 -> '(' 整数 ',' 整数 ')'

領域式は左結合であることに注意してください。 これは、たとえば、
表現

'" ".." " または " "'

「 」で始まり「 」で終わる領域、またはのみで構成される領域として評価されます。
文字列「」。 「 」で始まり「 」で終わる領域を取得するには
" " または " " のいずれかを使用して、適切な評価順序を示す必要があります。
括弧:

" ".. (" " または " ")

式には以下を含めることもできます 注釈、「#」で始まり、末尾まで続きます。
ライン。 ただし、語句内の「#」記号はコメントの始まりにはなりません。

セマンティクス OF 表現


式の値は、式を満たす入力テキストの領域のセットです。

v(basic_expr) 基本的な式の例:

v(フレーズ):=
テキストがフレーズのテキストと等しい入力テキストの領域のセット。

v('開始'):=
各入力の最初の位置の単一文字領域で構成されるセット
ファイル。 -S オプションが指定された場合、値は単一の領域を含むセットになります。
は入力ストリームの最初の文字を構成します。

v('終了'):=
各入力の最後の位置の単一文字領域で構成されるセット
ファイル。 -S オプションが指定された場合、値は単一の領域を含むセットになります。
入力ストリームの最後の文字を構成します。

v('chars'):=
すべての単一文字領域で構成されるセット。

v([ ]):=
空のセット。

v([(s_1,e_1) (s_1,e_2) ... (s_n,e_n)]):=
領域からなるセット r_i それぞれ i = 1、...、n、 の開始位置はどこですか
地域 r_i is s_i そしてその終了位置は e_i。 位置は次のようにする必要があります
非負の整数であり、領域はその昇順で指定する必要があります。
開始位置。 共通の開始位置を持つ領域は、次のように指定する必要があります。
終了位置の昇順。 ポジションは最初から数えます
-S オプションが指定されている場合を除き、各入力ファイルの文字
位置は入力ストリームの先頭から数えられます。 人数、個数、総数
ファイルまたはストリームの最初の位置はゼロです。

v('('region_expr')'):= v(region_expr)。

v(演算子_式) 演算子式の:

v(region_expr 'の' Basic_expr):=
の領域のセット v(region_expr) ある領域に含まれる
v(basic_expr)。 地域 x 別の地域に含まれています y もし、そしてその場合に限り、
の開始位置 x の開始位置よりも大きいです y そして終了位置
x の終了位置以下です y、または終了位置 x 小さいです
の終了位置よりも y と開始位置 x よりも小さくない
の開始位置 y.

v(region_expr 'いいえ' 'の' Basic_expr):=
の領域のセット v(region_expr) のどの領域にも含まれないもの
v(basic_expr)。

v(region_expr 「含む」 Basic_expr):=
の領域のセット v(region_expr) 一部の領域を含む v(basic_expr)。

v(region_expr 'いいえ' 「含む」 Basic_expr):=
の領域のセット v(region_expr) 領域を含まないもの
v(basic_expr)。

v(region_expr '同等' Basic_expr):=
両方で発生する一連の領域 v(region_expr)   v(basic_expr)。

v(region_expr 'いいえ 同等' Basic_expr):=
で発生する領域のセット v(region_expr) しかし発生しない
v(basic_expr)。

v(region_expr 'また' Basic_expr):=
に表示される領域のセット v(region_expr) または v(basic_expr) または
どちらも。

v(region_expr 「抽出」 Basic_expr):=
の領域で形成される空でない領域のセット v(region_expr)
任意の領域との重複部分を抽出することで、 v(basic_expr)。 たとえば、値は
of

'[(1,4) (3,6) (7,9)] を抽出中 [(2,5) (4,7)]'

領域 (1,1) と (8,9) で構成されます。

v(region_expr 「..」 基本_式):
この式の値は、次によって形成できる領域で構成されます。 ペアリング
からの地域 v(region_expr) の地域を含む v(basic_expr)。 ペアリングは
ネストされた括弧を組み合わせる方法の一般化として定義されます。
「内側から外側へ」。 このためには、リージョンの順序を比較できる必要があります。
重複したり入れ子になったりする可能性があります。 この順序は次のように定義されます。

しましょう x   y XNUMXつの領域になります。 その地域を私たちは言います x 先行 地域 y 終わりなら
ポジション x の開始位置よりも小さいです y. その地域を私たちは言います x is
後で 地域よりも y の終了位置の場合 x の終了位置よりも大きいです y,
または、同じ位置と開始位置で終了する場合 x の始まりより大きい
y. 地域 x is 地域よりも y の開始位置の場合 x より小さい
の開始位置 y, または開始位置と終了位置が同じ場合
of x の終了位置より小さいです y. 今は地域 x from v(region_expr) フォルダーとその下に
地域 y from v(basic_expr) 表現において対になっている v(region_expr 「..」 基本_式)
ifとifのみ

1. x 先行 y,

2. x のどの地域ともペアになっていません v(basic_expr) よりも早いのは y,
 

3. y のどの地域ともペアになっていません v(region_expr) より遅いのは x.

地域のペアリング x   y の開始位置から広がる領域を形成します。 x 〜へ
の終了位置 y.

v(region_expr '._' 基本_式):
からの領域のペアリング v(region_expr) と地域から v(basic_expr)
と同様に定義されます v(region_expr 「..」 基本_式) 上記、 それ以外は
地域のペアリング x   y 開始位置から広がる領域を形成します
of x の開始直前の位置へ y.

v(region_expr 「_。」 Basic_expr):=
からの領域のペアリング v(region_expr) と地域から v(basic_expr)
と同様に定義されます v(region_expr 「..」 基本_式) 上記、 以下は除く それ  
地域のペアリング x   y 位置から広がる領域を形成します
の終了位置の直後 x の終了位置まで y.

v(region_expr 「__」 Basic_expr):=
からの領域のペアリング v(region_expr) と地域から v(basic_expr)
と同様に定義されます v(region_expr 「..」 基本_式) 上記を除いて、現在は
地域のペアリング x   y テキスト位置から広がる領域を形成します
終了直後に x 直前のテキスト位置に
開始 y。 結果として生じる可能性のある空の領域は結果から除外されます。

v(region_expr '引用' 基本_式):
この式の値は、先頭から広がる領域で構成されます。
「」の位置左引用符 地域"で v(region_expr) の終了位置まで
対応する「右引用符 地域"で v(basic_expr)。 結果の領域は次のとおりです。
ネストもオーバーラップもありません。 左引用領域と右引用領域
領域は次のように定義されます。

· 最も初期の地域 (上記を参照) v(region_expr)   可能 左引用符
地域.

· 考えられる左引用符領域ごとに x、最初の地域 v(basic_expr)
前任者 x はその右引用符領域です。

· 右引用領域ごとに y in v(basic_expr)、最初の地域
v(region_expr) 前任者 y は左引用符領域として使用できます。

以下のクエリ例は、C スタイルの入れ子になっていないコメントを検索します。

"/*" 引用 "*/"

次のクエリの例では、引用符で囲まれた文字列を検索します。

"\"" 引用 "\""

(表現の違いに注意してください "\"" .. "\""、任意の部分文字列として評価されます
引用符で始まり次の引用符で終わる入力テキスト。)

亜種 _見積もり, 引用_   _引用_ 演算子に似ています _., ._   __
「引用領域」が側の表現に由来しているという意味
下線 _ は結果領域から除外されます。 (の場合 _引用_ おそらく
結果として生じる空の領域は結果から除外されます。)

v('連結' '(' 地域式 ')' ):=
の領域でカバーされる入力テキストの最長領域のセット
v(region_expr)。

v('内部' '(' 地域式 ')' ):=
の領域のセット v(region_expr) 他の領域を含まない
v(region_expr)。 どの領域式でも、 A、 表現 インナー(A) is
に相当 (A 含む A).

v('外側' '(' 地域式 ')' ):=
の領域のセット v(region_expr) 他の領域に含まれないもの
v(region_expr)。 どの領域式でも、 A、 表現 アウター(A) is
に相当 (A in A).

v(「参加」 '(' n 「、」 地域式 ')' ):
この式の値は、v(region_expr) の領域を処理することによって形成されます。
開始位置の昇順 (および終了位置の昇順)
共通の開始を持つ領域の位置)。 各地域 r 結果領域を生成します
r の先頭から始まり、後の (n-1) 番目の領域の末尾まで
r. この操作は、非ネスト領域でのみ有効です。 特に応用すると、
'chars' と組み合わせると、近似条件を表現するために使用できます。 例えば、

'"/*" は join(10,chars) の "*/" を引用符で囲みます'

最大 10 文字の長さのコメント「/* ... */」を選択します。

OF REGION 表現


ファイル eval.c 内の文字列「sort」の出現数をカウントします。

sgrep -c '「ソート」' eval.c

ファイル eval.c の中括弧で区切られたすべてのブロックを表示します。

sgrep '"{" .. "}"' eval.c

「sort」または「nest」を含む最も外側のブロックを表示します。

sgrep 'outer("{" .. "}" contains ("sort" or "nest"))'\
eval.c

拡張子が .c で、先頭に「sort」が含まれるが「nest」が含まれないすべての行を表示します。
ファイルの名前:

sgrep -o "%f:%r" '"\n" _。 「\n」に「並べ替え」が含まれています\
"nest" *.c を含まない

(このクエリでは先頭に改行がないため、最初の行が省略されることに注意してください。
文字「\n」、および改行で終了していない場合は最後の文字も含みます。 正しいやり方としては
テキスト行を表現するには、以下の LINE マクロの定義を参照してください。)

「if」とそれに続く条件で構成される条件文の先頭を表示します。
括弧内、ファイル *.c 内。 クエリでは、コメント内にある「if」を無視する必要があります。
「/* ... */」、または「#」で始まるコンパイラ制御行:

sgrep '"if" が ("/*" 引用符 "*/" または ("\n#" .. "\n")) に含まれていません \
.. ("(" .. ")")' *.c

に表示される条件部分に文字列「access」を含む if ステートメントを表示します。
ソースファイル *.c 内のプログラムの main 関数:

sgrep '"if" が ("/*" 引用符 "*/" または ("\n#" .. "\n")) に含まれていません \
.. ("(" .. ")") "アクセス" を含む \
in ("main(" .. ("{" .. "}")) \
.. ("{" .. "}" または ";")' *.c

複雑な条件がかなり読みにくくなる可能性があることがわかります。 慎重に使用すること
設計 マクロ クエリの表現がはるかに簡単になります。 たとえば、次のようにすることができます。
ファイル内の m4 マクロ プロセッサ定義の下 (たとえば、c.macros):

定義(BLOCK,( "{" .. "}" ))
define(COMMENT,( "/*" quote "*/" ))
チェンジコム(%)
定義(CTRLINE,( 開始の "#" または "\n#"
_。 ("\n" または終了) ))
定義(IF_COND,( "if" が (COMMENT または CTRLINE) にない場合)
.. ("(" .. ")")))

次に、上記のクエリは次のようにより直観的に書くことができます。

sgrep -p m4 -f c.macros -e '「アクセス」を含むIF_COND\
in ( "main(" .. BLOCK ) .. (BLOCK または ";")' *.c

最適化


スグレップ クエリ式に対して共通の部分式の削除を実行します。
部分式は XNUMX 回だけ評価されます。 たとえば、表現では

'(" " または "\n" または "\t") .. (" " または "\n" または "\t")'

部分式

'(" " または "\n" または "\t")'

評価されるのは XNUMX つだけです。

診断


終了ステータスは、一致する領域が見つかった場合は 0、見つからなかった場合は 1、構文エラーの場合は 2、または
アクセスできないファイル (一致する領域が見つかった場合でも)。

ENVIRONMENT


sgrep の独自のデフォルト オプションを環境変数の値として指定できます。
SGREPOPT。 たとえば、

setenv SGREPOPT '-p m4 -o %r\n'

sgrep が m4 プリプロセッサを式に適用し、各出力領域を次のように表示します。
その後に改行が続きます。

onworks.net サービスを使用してオンラインで sgrep を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad




×
Advertisement
❤️ここでショッピング、予約、購入してください。料金はかかりません。これにより、サービスが無料で維持されます。