問題タブ [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.

0 投票する
6 に答える
3575 参照

perl - ファイルの他の列の値に基づいて、ファイルの特定の列の値を置き換える必要がある

以下は私のファイルの内容であり、以下は私の要件です列番号1と列番号5の値に基づいて、列7の値を「1」に置き換えたいと思います。

例えば:

  1. 列 1 が「変更」、列 5 が「延期」の場合、列 7 の値を「1」に置き換えます。
  2. 列 1="change" および列 5="defererence" の場合、列 7 の値を "1" に置き換えます。
  3. それ以外の場合、行は何もせず、そのままにしておきます。

入力ファイル:

上記は説明を簡単にするための単なるサンプルです。ただし、ファイルの値と照合するために、ファイルから列 1 と列 5 の値を渡したいと考えています。一致する場合は、列 7 のみを値「1」に置き換えます。それ以外の場合は行で何もせず、そのままにしておきます。

いくつかのオプションを試しましたが、必要な結果を得ることができませんでした。

上記のコマンドは、フィールドに関係なく、ファイル内の 3 のすべての値を置き換えています。しかし、ループで1列目と4列目に異なる値を渡すことで、1列目と4列目に基づいて6列目の値のみを置き換えたいです。

詳細情報の追加:

上記で私が述べたように、上記の例は、誰もが要件を理解できるようにするための私の問題の最も単純な形式です。一致する列1と列5の値のリストを持っている「listfile」という名前のファイルがあります。ソースファイルの列 1 と列 5 の値がファイル "listfile" から渡された値と一致する場合、解決策は列 7 の値を "1" に置き換える必要があります。それ以外の場合は、ソース ファイルの行に対して何もせず、そのままにしておきます。

以下を実行しようとしましたが、必須を達成できませんでした。

元のソース ファイルと、7 番目の列を置き換えた後の改訂されたソース ファイルの間のレコード数は同じである必要があります。唯一のことは、ファイル listfile の列 1 と 5 のすべての値です。列 7 の値を「1」に置き換える必要があります。

ありがとう、

0 投票する
1 に答える
85 参照

nawk - 複数行のnawk出力で等しくない値を検索する方法

私はCVSステータス管理のためのこの現在の解決策を持っています:-

これにより、ローカルで変更されたファイルとパッチが必要なファイルが表示されます。これは素晴らしいことです。ただし、すべてのステータスをキャッチするより良い解決策は、ステータスが「最新」ではない場合です。s!= と s<> を試しましたが、= しか許可されていないようです。

0 投票する
4 に答える
217 参照

string - NAWK 部分文字列が複数の可能な値であることを確認するにはどうすればよいですか?

私はNAWK(またはAWK)の非常に初心者ですが、次を使用して部分文字列の値を確認できることを知っています:

(これは UNIX で実行されているため、' $0' になっています。)

文字列が ABCDまたはMNOP のいずれかである場合はどうなるでしょうか? これをワンライナーとしてコーディングする簡単な方法はありますか? 探してみましたが、今のところ迷っているだけです...

0 投票する
4 に答える
154 参照

linux - 2 つのファイルを比較してデータをマージする

私は以下のファイルを持っています、

合計.txt

order1,5,item1
order2,6,item2
order3,7,item3
order4,6,item4
order8,9,item8

変更された.txt

order3,8,item3
order8,12,item8

total.txt は合計注文データで、changed.txt は最近変更されたデータです。最近の変更を合計でマージしたい、出力を次のようにしたい、

出力.txt

order1,5,item1
order2,6,item2
order3,8,item3
order4,6,item4
order8,12,item8

注: total.txt の 2 列目 (3 行目と 5 行目) は changed.txt ファイルで更新されます

以下nawkを使用して最初の列を比較しましたが、出力ファイルに出力できませんでした。以下のコマンドを完了するのを手伝ってください

nawk -F"," 'NR==FNR {a[$1]=$2;next} ($1 in a) "print??"' total.txt changed.txt

0 投票する
4 に答える
416 参照

perl - ワンライナーを使用して N 番目のオカレンスに続くものを削除する

「:」が含まれる任意のフィールドで、「:」という文字が 4 回出現した後に続くものを削除したいと思います。例を参照してください。

入力:

期待される出力:

したがって、基本的に「:」を含むフィールドはすべて削除する必要があります。":" が 3 回しか表示されないため、3 行目は何も変化しないことに注意してください。最初の行でのみ機能し、コンマが多いため、2番目の行では機能しない解決策(良くない)を試して見つけました。

不完全な解決策:

前もって感謝します

0 投票する
2 に答える
614 参照

unix - awk または sed を使用して、パターンの最初の出現とパターンの最後の出現の間にテキストを出力します

パターン間に印刷するためのいくつかの解決策を見てきましたが、私の問題に対応するために物事をまとめることができません. 以下に示すビュー定義を含むテキスト ファイルがあり、最初と最後の中かっこの間の定義を抽出する必要があります。注意: 印刷する必要がある開いた波括弧と閉じた波括弧が間にあります。awkまたはsedで解決策はありますか?

必要な出力:

0 投票する
1 に答える
73 参照

bash - シェルスクリプトで列に従って行を印刷する

私はそれが非常に基本的な質問であることを知っていますが、私はシェルスクリプトのまったく新しいものです

「berkay」という名前のtxtファイルとその内容は次のようなものです

2列目がエラーの行を出力したいので、出力は

03:05:18 エラー blablablablabla2

「if nawk { $2}」のようなことを考えていますが、助けが必要です。