問題タブ [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.
perl - コマンドラインピボット
私は過去数日間、次のデータを非常にすばやく転置できる一連のコマンドラインツール、perlまたはawkスクリプトを探していました。
これに:
データセットには、各「セル」の値が1つしかないことに注意してください(つまり、スプレッドシートの場合と同様に、行「1」、列「A」の重複はありません)。
データを転置するためにさまざまなawkシェルの実装を試しましたが、それらを機能させることができないようです。私が持っていたアイデアの1つは、各「Col」値を個別のファイルに切り取り、「join」コマンドラインを使用して「Row」で元に戻すことでしたが、もっと簡単な方法が必要です。これは非常に簡単に実行できると確信していますが、少し苦労しています。
私の入力ファイルには、列AからG(主に可変長の文字列を含む)と10,000行があります。すべてをメモリにロードすることを避けることができれば、それは大きなプラスになります。
答えがわかれば誰でもメールでビール!
いつものように-あなたの助けに前もって感謝します。
乾杯、
ジョシュ
ps-この非常に基本的なタイプのピボット/転置操作を実行するためのすぐに使用できるコマンドラインユーティリティがないことに少し驚いています。http://code.google.com/p/openpivot/とhttp://code.google.com/p/crush-tools/を調べましたが、どちらも集計計算が必要なようです。
awk - awk を使用して複数のパターンをレコードに複数回一致させる
一度に複数のパターンを効率的に照合しようとしていますが、これは原則として非常にうまく機能します。
さらに、レコード内のすべての出現を一致させたい:
上記のサンプルを複数のパターンに一致するように拡張すると、一連の findall 呼び出しが発生します。
問題は、多くの異なるパターン (>100) では、このアプローチが最初のサンプルほどうまく機能しないことです。パターンが同じオートマトンに終わらないので、これは理にかなっています。
物事を少しスピードアップする方法はありますか?たとえば、複数のパターンで「一致」を提供します。パターン (abc|def) を連結できると思いますが、どのパターンが正確に一致したかという情報が失われます。
更新:すべての出現が一致する必要があります:
入力データは2 つの一致するレコード(標準の区切り文字を指定)になりますが、パターン "abc" および "xyz" を使用すると、データ全体で 4 つの一致が得られるためです。この投稿の最初のサンプルでは、少なくとも3 つの一致が報告されていますが、最初のレコードで「abc」が複数回出現していることを検出できません。
python - Python : 2 つのファイルで共通のテキストを見つける
テキストファイルの例を挙げましょう:
例file1.txtデータは次のとおりです:-
file2.txtのデータは次のとおりです。
望ましい結果:
この結果を得るにはどうすればよいですか? python
またはgawk
またはを使用したいsed
。
replace - 特定の列を検索し、次の列をgawkで特定の値に置き換えます
データに繰り返し行があるすべての場所を見つけて、繰り返し行を削除しようとしています。また、2番目の列の値が90である場所を探しており、次の2番目の列を指定した特定の番号に置き換えています。
私のデータは次のようになります。
データを次のように表示したい:
私のコード:
繰り返し行を正常に削除できましたが、コードの次の部分を実行できません。これは、BEGINでERRORVALUES(10 = 1、11 = 2、12 = 3)として指定した値を置き換えることです。 、30 = 4、31 = 5、32 = 6)、その値を含む実際の列。基本的に、行のその値をERRORVALUEに置き換えたいだけです。
誰かがこれを手伝ってくれるなら、私はとても感謝しています。
c - c内でgawkを使用する
cで次のgawkコマンドを使用する方法を教えてください。「システム」関数を使用してc内でいくつかのシェルコマンドを使用するように。さらに、以下のコマンドで数値、つまり 6,2,8 をパラメータとして指定したいと考えています。
ありがとう、どんな助けでも大歓迎です。
replace - gawkを使用して特定の列を特定の値に置き換える
データの列2に90があり、上の2行で列2の値が変更されている場所を見つけようとしています。たとえば、以下のデータで、行11に90が表示されている場合、行9で列2の値を変更します。 11から5まで。数値を変更したい値のセットが事前にあります。値は常に10、11、12、30、31、32から1、2、3、4、5、6になります。
私のデータ
欲しいもの
前の行を保存して参照として使用しようとしていますが、1行しか戻れず、2行戻る必要があります。ご協力ありがとうございました。
printing - gawk を使用して n 行ごとに行を出力する
n 行ごとに取得して行に出力する必要がある非常に巨大なファイルがあります。
私のデータ:
データを次のようにしたい:
これはもちろん一例です。巨大なデータ ファイルを 10 行ごとに表示したいのです。私はこれまでにこれを試しました:
awk - gawkを使用して列と行を転置する
非常に長いファイルを転置しようとしていますが、完全に転置されないのではないかと心配しています。
私のデータは次のようになります。
データを次のように表示したい:
最初の文字列の長さが問題になるでしょうか?私のファイルは、この約2000行よりもはるかに長いです。また、最初の文字列の名前をThisis234に変更してから、転置することはできますか?
http - タイムアウトなしでパイプを介してバイナリデータの最後のビットを読み取るgawk?
インターネットから多くの小さな情報をダウンロードするプログラムを既に gawk で作成しています。(メディアスキャナーとインデクサー)
現在、wget を起動して情報を取得しています。これで問題ありませんが、呼び出し間の接続を単純に再利用したいと思います。プログラムを実行すると、同じ API サービスに対して 200 ~ 2000 回の呼び出しが行われる可能性があります。
gawk がネットワーキングを実行できることを発見したところ、geturlを見つけまし た。ただし、そのページの下部にあるアドバイスは十分に考慮されていますが、最後の行を読んで接続を開いたままにする簡単な方法を見つけることができません。
私は主に JSON データを読んでいるので、RS="}" を設定して、本文の長さが予想されるコンテンツの長さに達したときに終了できます。ただし、これは末尾の空白で壊れる可能性があります。より強固なアプローチを希望します。接続を開いたままにする散発的な http リクエストを awk に実装するより良い方法はありますか。現在、私は次の構造を持っています...
この小さなことがここでのすべての可能性を台無しにしているように見えるのは残念です. また、誰かが尋ねる場合:) ..
- awk が最初に選択されたのは歴史的な理由からです。当時、この組み込みプラットフォームには他の言語オプションがあまりありませんでした。
- 事前にすべての URL を収集して wget に渡すのは簡単ではありません。
- perl/python などで再実装することは、簡単な解決策ではありません。
- URLを名前付きパイプと wget -i - にパイプしようとしているのを見てきましたが、うまくいきません。データはバッファリングされ、アンバッファは使用できません。また、wget は処理前に EOF まですべての URL を収集すると思います。
- データは小さいので、圧縮が不足していても問題ありません。
bash - 指定された strftime 形式が日付と一致するかどうかを確認します
たとえば、時間の strftime 形式と(%Y-%m-%d %H:%M:%S)
、この種のデータを含むファイルがあります(2012-02-11 17:15:00)
。指定されたパターンが実際にデータと一致するかどうかを確認する必要があります。これにアプローチする方法は?ああ、デート?
編集: 詳細情報: ユーザーは strftime 形式を入力します。たとえば、入力時としましょう。次に、それらの日付を含むファイルを入力します。それらのデータが有効であることを確認する必要があります (彼は間違いを犯していません)。したがって、入力ファイルの行をチェックして、指定されたパターンに一致するデータがあるかどうかを確認する必要があります。例:
ユーザーは strftime 形式を入力します。
(%Y-%m-%d %H:%M:%S)
入力ファイル:
(2012-02-11 17:15:00) long sentence
有効
ユーザーは strftime 形式を入力します。
Date[%Y.%m.%d %H:%M:%S]
入力ファイル:
Date-2012.02.11 17:15:00- long sentence
無効