問題タブ [nawk]
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.
bash - nawk各行に列を追加
各行の最後にファイル名の列を追加しようとしています。すべての行には
Name
とsurname
スペースでnumber
区切られSurname
、タブで区切られています。
私はこのスクリプトでそれを行っていますが、それは機能せず、行の先頭にファイル名を追加するだけです。
PSOSはSunOSです。
regex - Linux: 行から属性を抽出して変換する
次の形式の行を含むファイルを取得した場合:
SOME_ATTRIBUTE_1 XYZ; IMPORTANT_ATTRIBUTE_1 1234; SOME_ATTRIBUTE_2 XYZ; IMPORTANT_ATTRIBUTE_2 AB;
これを次の形式に変換して、2 つの重要な属性値が新しい属性を生成するようにします。
JOIN_IMPORTANT_ATTRIBUTE AB1234; SOME_ATTRIBUTE_1 XYZ; IMPORTANT_ATTRIBUTE_1 1234; SOME_ATTRIBUTE_2 XYZ; IMPORTANT_ATTRIBUTE_2 AB;
これは awk などのワンライナーで実行できますか? Javaトリックボックスをつかむことなく、これに取り組む方法がわかりません。
linux - Unix の Nawk コマンド
示されているように、nawk コマンドがあります。このコマンドが何をするのか、誰でも説明できますか?
csv - awk 配列内の要素を設定する
処理する大きな .csv ファイルがあり、要素は次のようにランダムに配置されます。
xxxxxx,xx, MLOCAL
, MREMOTE
, 33222
, 56
,
xxxxxx,xx, , , , 22/10/2012
,
xxxxxx,xx, , ,
xxxxxx,xx, , ,
xxxxxx,xx , , , , , xxxxxx ,
xx , , , ,
xxxxxx , xx, , ,18/10/2012
MREMOTE
MLOCAL
33222
56
22/10/2012
18/10/2012
MLOCAL
341993
22/10/2012
MREMOTE
9356828
08/10/2012
LOCAL
REMOTE
19316
15253
22/10/2012
22/10/2012
REMOTE
LOCAL
1865871
383666
22/10/2012
22/10/2012
REMOTE
1180306134
19/10/2012
フィールドLOCAL
、REMOTE
、MLOCAL
またはMREMOTE
は次のように表示されます。
- それらがペア ( LOCAL / REMOTE ) として表示される場合、3 番目のフィールドが
MLOCAL
で、4 番目のフィールドがMREMOTE
の場合、5 番目と7 番目のフィールドは の値と日付を表しMLOCAL
、6 番目と8番目のフィールドは の値と日付を表しますMREMOTE
- それらが単一 ( only
LOCAL
または onlyREMOTE
) として表示される場合、4 番目と 5 番目のフィールドはフィールド 3 の値と日付を表します。
ここで、次を使用してこれらの行を分割しました。
しかし、3 番目と 4 番目のフィールドのパターンが見つからないため、さらに処理するために配列要素のそれぞれに var 名を割り当て続けなければなりません。
ここで、「case」ステートメントを使用しようとしましたが、awk または nawk では機能しません (gawk のみが期待どおりに機能しています)。私もこれを試しました:
しかし、それはうまくいきません。
ですから、これをどのように処理するかについて何か考えがある場合は、考えられるすべての状況を上からカバーするためのパターンを見つけることができるように、ヒントを教えていただければ幸いです。
編集
このすべての助けに感謝する方法がわかりません。さて、私がしなければならないことは、上で書いたよりも複雑です。できる限り簡単に説明しようと思います。そうしないと、皆さんをかなり混乱させるでしょう。私の出力は次のようになります。
NAME
, UNIQUE_ID
, VOLUME_ALOCATED
, MLOCAL_VALUE
, MLOCAL_TIMESTMP
, MLOCAL_limit
, LOCAL_VALUE
, LOCAL_TIMESTAMP
, LOCAL_limit
, MREMOTE_VALUE
, MREMOTE_TIMESTAMP
_ REMOTE_VALUE
_REMOTE_TIMESTAMP
(ここでMLOCAL_limit
、 とはとまたはLOCAL_limit
の間の減算結果です)VOLUME_ALOCATED
MLOCAL_VALUE
LOCAL_VALUE
したがって、私の出力ファイルでは、フィールドの位置は次の
ように配置
する必要があります。MLOCAL_VALUE
MLOCAL_TIMESTMP
LOCAL_VALUE
LOCAL_TIMESTAMP
MREMOTE_VALUE
MREMOTE_TIMESTAMP
REMOTE_VALUE
REMOTE_TIMESTAMP
ここで、例は次のようになります: 次の入力の場合: name
, ID
, VOLUME_ALLOCATED
, MLOCAL
, MREMOTE
, 33222
, 56
,22/10/2012
18/10/2012
name
、ID
、VOLUME_ALLOCATED
、REMOTE
、234455
_19/12/2012
この行を処理する必要があり、出力は次のようになります。
name
, ID
, VOLUME_ALLOCATED
, 33222
, 22/10/2012
, MLOCAL_LIMIT
, ,
,
,
56
, 18/10/2012
_ _
7th
、8th
、9th
、 、およびに関する情報がないため、 、 、 12th
、 およびフィールドは空です: 、、、および13th
LOCAL_VALUE
LOCAL_TIMESTAMP
LOCAL_limit
REMOTE_VALUE
REMOTE_TIMESTAMP
また
name
, ID
, VOLUME_ALLOCATED
, ,
,
,
,
,
,
,
_
234455
_9/12/2012
4th
、5th
、6th
、7th
、 、8th
、9th
、10th
、、11th
、 に関する情報がないため、フィールドは空の値である必要があります: MLOCAL_VALUE
、MLOCAL_TIMESTAMP
、MLOCAL_LIMIT
、LOCAL_VALUE
、LOCAL_TIMESTAMP
、LOCAL_LIMIT
、MREMOTE_VALUE
MREMOTE_TIMESTAMP
VOLUME_ALLOCATED
ID
次のように、スクリプトで以前に処理されたフィールドに基づいて、他の csv ファイル (「info.csv」と呼ばれる) から取得されます。
情報.csv
VOLUME_ALLOCATED
, ID
, CLIENT
5242881
, 64
, subscriber
567743
, 24
_visitor
データ.csv
NAME
, 64
, MLOCAL
, 341993
, 23/10/2012
NAME
, $ , $ , $ 24
_LOCAL
REMOTE
2347
4324
19/12/2012
18/12/2012
今、私のコードはこれです:
3 番目と 4 番目のフィールドを処理する方法がわからないため、残りのフィールドを設定する正しい方法が見つかりません。
かなり混乱させて申し訳ありませんが、これが私の現在の状況です。ありがとう
linux - Unix での Awk 入力の分離
/ で区切られた 2 つの日付を取得する Awk プログラムを作成しようとしています。たとえば、2013 年 3 月 22 日であり、それらを 3 つの別々の数字に分割して、22 の 3 と 2013 を別々に操作できるようにします。
プログラムを次のように呼び出したい
これまでのところ、私は持っています:
これは両方の日付を受け入れますが、それらを分割する方法がわかりません。さらに、上記のプログラムは nawk で呼び出す必要があり、awk は 2013 年 2 月 23 日を開くことができないと言います。
前もって感謝します。
json - 末尾の区切り文字なしでAWKの出力レコードを区切る
私は次の記録を持っています:
そして、AWKでJSONに変換したいと思います。このコードの使用:
私にこれを与えます:
問題は、最後のデータ行の末尾にコンマがあることです。JSON出力が受け入れられなくなります。この出力を取得するにはどうすればよいですか?
ksh - awk を使用してファイルの各行を読み取り、配列に格納します
私はSun Solarisでkshに取り組んでいます。ジョブ名が 1 行に 1 単語しかないファイルがあります。ファイルからすべてのジョブを読み取り、指定された順序で 1 つずつ実行します。kshでそれを行う方法。以下のコードは、コマンド プロンプトで起動すると正常に動作します。シェルスクリプトで実行しようとすると、エラーが発生します。
エラー:
unix - nawkスクリプトの名からhtmlへの最初の文字を取得しようとしています
17 行目が機能しないのはなぜですか (コードでコメントされています)?:
17行目にそのような文を入れてもいいですか?名の最初の文字を取得しようとしています。
html - Nawk スクリプトからの HTML テーブルでの間違った出力
$3
.txt
私のメールアドレス列を表す3列目です。"$3"
電子メール アドレスではなく、次のステートメントが出力されるのはなぜですか?:
私は立ち往生しています。