問題タブ [gawk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
csv - Awk: 2 つのフィールドの類似部分を切り取り、残りの部分の差を取得する方法は?
エポック時間をマイクロ秒単位で表示する 2 つのフィールドがあるとします。
1318044415123456,1318044415990056
私がやりたかったことは次のとおりです。
- 両方のフィールドから共通部分を切り取ります: "1318044415"
- 残りの部分の差を取得します: 990056 - 123456 = 866600
なぜ私はこれをしているのですか?awk は浮動小数点 IEEE 754 を使用しますが、64 ビット整数は使用しないため、2 つのイベントのエポック時間の差をマイクロ秒単位で取得する必要があります。
助けてくれてありがとう!
編集:
最後に、Awk が Snow Leopard 10.6.8 で処理できる最大数を見つけました9007199254740992
。
これを試して:echo '9007199254740992' | awk -F ',' '{print $1 + 0}'
Awk のバージョンは20070501
(によって作成されたawk --version
)
algorithm - 配列全体を保持せず、一定のスペースで、ソートされた配列の正確な中央値を計算するにはどうすればよいですか?
ソートされた配列を入力からawk/gawkに読み取り、中央値を取得する必要があります。配列全体を格納したくなく、計算のために一定のスペースを取得しようとしています。
これを行うアルゴリズムを知っていますか?配列はソートされていますが、そのサイズは不明です。
前もって感謝します!
lint - 空の配列を作成する方法
アップデート
以下の元の説明には多くのエラーがあります。gawk lintは、のRHSとして使用される初期化されていない配列について文句を言いませんin
。たとえば、次の例ではエラーや警告は表示されません。私が受け入れようとしている答えはsplit
、空の文字列を使用して空の配列を作成することを示唆しているため、質問を削除していません。
元の質問
私のawkスクリプトの多くには、次のような構成があります。
そのgawk --lint
結果、
警告:初期化されていない変数`thread_start'への参照
したがって、次のようにBEGINブロックで初期化します。しかし、これはごちゃごちゃに見えます。ゼロ要素配列を作成するためのより洗練された方法はありますか?
awk - フィールド(位置変数)の値をgawk/awkのユーザー定義変数に代入する
「サイズ」という変数を作成し、gawk 位置変数からそれに値を割り当てようとしています。しかし、それはうまくいかないようです。以下の例では、フィールド 4 の値を変数「サイズ」に格納しようとしています。可変サイズを印刷すると、フィールド 4 だけではなく行全体が印刷されます。
後で使用するために、フィールド値を変数に保存するにはどうすればよいですか?
次のように出力されます。
これだけを見たい:
大きい
regex - awk 正規表現でキャレット (^) をキャプチャする
私はこの形式で出力しています:
awk 正規表現を使用して以下をキャプチャしようとしています:
これは特に難しいことではありませんが、適切にエスケープする方法がわから^
ないため、新しい行またはそうでないとして解釈されません。以下は私がこれまでに持っているものです。印刷する以外はほとんど機能します。
コードは次のとおりです。
text - ファイルから行を削除する
これに似た質問があります: SEDまたはAWKでファイルから行を削除します
このファイルの3と5で始まり、その間のすべての行を削除するにはどうすればよいですか。
答えが明らかに他の場所にある場合は、この質問を削除します。
これが好きに見えたらどうしますか:
regex - 16 進文字列 GAWK に一致
gawk を使用して 32 文字の 16 進文字列に一致させたい。
/[A-F0-9]{32}/ を使用できることがわかりましたが、 --posix または --re を指定して gawk を実行した場合に限ります
コマンド ライン オプションのない代替手段はありますか? ([A-F0-9] を 32 回繰り返す以外に!)
awk - awkのフィールドセパレーターは複数の文字を含むことができますか?
複数の文字で構成されるフィールドセパレータを使用できますか?引用符とコンマを含む単語を区切りたいのと同じです。
「学校」、「大学」、「市」
そこで、ここではFSを「、」に設定します。しかし、FSをそのように定義すると、面白い結果が得られます。これが私のコードの抜粋です。
gawk - 範囲パターンをオン/オフにするレコードをスキップするにはどうすればよいですか?
これは機能しますが、最初と最後のレコードを出力します。省略したいのですが。そうする方法は?
「範囲パターンをオンにするレコードとオフにするレコードの両方が範囲パターンと一致します。これらのレコードを操作したくない場合は、ルールのアクションにifステートメントを記述してそれらを区別することができます。興味のあるレコード。」しかし、例はありません。のようなものを試しまし
gawk '/<Lexer>/,/<\/Lexer>/' {1,FNR-1} file
たが、機能しません。awkを使用せずにこれを行うためのより良い方法がある場合は、そう言ってください。
regex - awkと正規表現の単純なトラブル
出力が得られないのはなぜですか?
ありがとうございました。