問題タブ [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.
regex - sed、awk、またはgawkを使用して、一致するものだけを印刷する方法は?
sed、awk、gawkを使用して検索と置換などを行う方法については、多くの例とマニュアルページがあります。
しかし、私の場合、特定の値を抽出するためにテキストファイルに対して実行したい正規表現があります。検索と置換はしたくありません。これはbashから呼び出されています。例を使用してみましょう:
正規表現の例:
入力ファイルの例:
これは単純に聞こえますが、sed / awk/gawkを正しく呼び出す方法がわかりません。私がやりたかったのは、bashスクリプト内から次のことです。
私が試したことは次のとおりです。
bash - gawk / awk: 日付を getline にパイプする *時々* うまくいかない
日付をある形式から別の形式に変換しようとしています。たとえば、「2005 年 10 月 29 日」から 2005-10-29 に変換します。625 の日付のリストがあります。オークを使っています。
ほとんどの場合、変換は機能します。ただし、場合によっては変換がまったく行われず、(変換された) 日付を保持するはずの変数が未定義のままになることがあります。
これは常にまったく同じ行で発生します。これらの奇妙な行の日付に対して (Bash シェルから) 明示的に「date」を実行すると、問題なく動作します (日付は適切に変換されます)。-- 重要なのは、それらの行のテキストの内容ではありません。
この動作の理由と、スクリプトを修正するにはどうすればよいですか?
彼女は:
この問題を再現したい場合:
- このファイルをダウンロードします: uBXr0r15.txt。
- Awk スクリプトを実行します。
- bug-out-3.txt で「undefined」を検索します。
(「未定義」は、私のコンピューターで 122 回見つかりました。)
その後、スクリプトを再度実行すると、(私のコンピューターでは) bug-out-3.txt は変更されず、まったく同じ日付が未定義のままになります。
(Gawk バージョン 3.1.6、Ubuntu 9.10。)
敬具、マグナス
python - Pythonからgawkを呼び出す
この方法でPythonからgawk(AWKのGNU実装)を呼び出そうとしています。
私の問題は、「i」がそれが表す値に置き換えられていないことです。「i」が表す値は整数であり、文字列ではありません。この問題を解決するにはどうすればよいですか?
string - フィールド内の要素の効率的な分割
データベースからエクスポートしたテキスト ファイルにフィールドがあります。フィールドには住所が含まれていますが、非常に長い場合があり、データベースでは複数の行を含めることができます。エクスポートすると、改行文字は次のようにドル記号に置き換えられます。
すべての住所に複数の行があるわけではなく、3 行を超える住所はありません。各行の長さは可変です。
メールマージに使用されるMS Accessにインポートするためにデータをマッサージしています。$ 記号がある場合はフィールドを分割したいが、フィールドに 1 行しか含まれていない場合は、2 つの追加の出力フィールドを長さゼロの文字列に設定して、アドレスに空白行が含まれないようにしたい印刷されたとき。
テキストファイル内の他のすべてのデータに対して正しく機能している awk ファイルがありますが、この最後のビットを機能させる必要があります。以下のコードを試しました。else で構文エラーが発生するという事実は別として、これが自分のやりたいことを行う良い方法かどうかはわかりません。これは Windows 上の gawk で行われています。
編集:申し訳ありません。これがサンプルです
HEADER を含まない行のみに一致します。$ 記号でテキスト文字列を分割する必要があります。パイプ間の文字列をパディングしないでください (これが、元のコードで長さを取得しようとした理由です)。この例では、6 つの出力フィールドがあり、データのないフィールドは単に空の文字列です (これもコードで実行しようとしていたことです)。
それが役立つことを願っています! これがまだ明確でない場合はお知らせください。
macos - OSX、G/AWK、Bash - 「不正なステートメント、終了していない文字列」、およびファイル出力なし
私が抱えていた問題を解決するために SO の誰かが親切に提供してくれたスクリプトがありますが、OSX で動作させるにはいくつか問題があります。
元のソースは次のとおりです。
スクリプトを実行すると、次のエラーが発生します。
見たところ、[i] の変数は出力ファイルに修正されていませんが、その理由はわかりません。
AWK を GAWK に変更して元のスクリプトを実行すると、出力は次のようになります。
したがって、関連する行を編集して、未終了の文字列を修正します
その後、問題なく実行され、エラーは発生しませんが、出力ファイルはありません。
何か案は?私は昨夜と今朝の大部分をこれに注ぎました。
サンプル入力ファイル:
そして、出力例は次のようになります
したがって、L1 の出力例は次のようになります。
L2 の場合:
bash - 正規表現でファイルを照合する
映画のリストを含む入力ファイルがあります(繰り返しエントリがある場合があることに注意してください)。
最初のファイルの各エントリについて、別の参照ファイルから対応する一致(行番号)を見つけます。
必要な出力は次のようになります(参照ムービー+参照ファイルの行番号):
基本的に、両方のファイルのエントリの違いは、空白、括弧、ポイントなどの一部の文字がアンダースコアに置き換えられていることです。
誰かがそれに光を当てることができますか?
幸運をお祈りしています、
ハビエル
awk - 書式を崩さずに列の内容を変更する
$ echo "a b" | awk '{print $0; $1="1"; print $0}' ab 1 b
次のような書式設定された出力を受け取りたいです。
それを行う簡単な方法はありますか(IFS、OFSの変更なし)? 大きなテーブルの列を変更していますが、その後見苦しくなります。各列を再フォーマットしたくありません。
ありがとう。
unix - R スクリプトから gawk を呼び出す
こんにちは、Windows XP で R を使用しています。シェル パスに cygwin があります。次のように、R シェル コマンドを介して gawk にコマンドを送信します: shell("gawk "{print $1}"", m[1], "_", h[i]."_79.7.dat""} このエラーが表示されます Error: unexpected '{' in "shell("gawk "{" どうすればこの問題を解決できますか? ありがとうございます
unix - awkはテキストを置き換えますが、最後の行は置き換えません
私は以下のawkライナーを試しました(Windowsコマンドプロンプトで):正しく機能していません
入力ファイルは以下のとおりです
UNIXソリューションも実現可能です
batch-file - gawk 1 ライナーである「set」変数を使用する
GMT ユーティリティ (汎用マッピング ツール) を使用して xyz ファイルの輪郭を描く短いバット ファイルを作成しています。最大ファイルと最小ファイルを読み込んで、後でバット ファイルで使用したいです。
set max_color=gawk "BEGIN {max = 0} {if ($3>max) max=$3} END {print max}" %file%
set min_color=gawk "BEGIN {min = %max_color%} {if ($3'< 'min) min=$3} END {print min}" %file%
でも後で読もうとすると
makecpt -Crainbow -T%min_color%/%max_color%/10 > conc.cpt
値を赤くする代わりに、gawk の 1 つのライナー全体があります
。値を設定するにはどうすればよいですか