-2

タイトルごとに列を持つフラット ファイルを解析しようとしています NAME COMPANY DETAILS STATUS etc(データが類似していない場合)。

そのファイルを入力としてスクリプトを実行するときに列を更新する必要がありSTATUS、他の列の詳細に応じて STATUS が更新されます。

当然のことながら、sed & vi は使用できません。助けてください。

解析しようとしているファイルの抜粋は次のとおりです。解析しようとしているファイルからの抜粋で、質問の対象は次のとおりです。

34 /* 1 2 3 4 5 6
35 /*3456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
36 YYNNN LOCAL1 TRANSFER-CDM(only) =>local.transfer LOCAL
37 YYNNN LOCAL2 EXCHANGE-CATIA =>IGES/DXF/STEP LOCAL
38 YYNNN ACIS1 C AutoWeb Media Services CCX
39 YYNNN ACNC1 C Auto/Con Corporation CCX
40 YYNNN ACST1 C Accurcast Inc CCX
41 YYNNN AAGD1 C Algonquin Automotive CCX


次に、このフラット ファイルを解析する必要があります。6 番目の列が STATUS として追加されます。

私が試してみました:

awk '/23861/ { $0=$0 "|処理済み" } {print}' 入力

ここで - 1.awk コマンド wil srch 4 パターン
2.中括弧内の thng は最後の列で更新​​されます

しかし、これもエラーになります。行の文字列と一致する場合、列の最後に「|Processed」文字列が追加されます。
そのコマンドをもう一度実行すると、最後にその文字列が再び追加されます。 その行はJAN FEB MAR |Processed |Processed
のように見えます

今、私が望むのは、以前の「| Processed」値を(条件に従って)新しい値に置き換え、それに応じてその値を更新することです

4

2 に答える 2

1

定義する必要があります

他の列の詳細に応じて。

詳細は??

たとえば、DETAILS 列の値 ==1 の場合、更新を行うと、次のことができます。

awk '$3==1{$4="NEW STATUS"}1' yourFlatFile

会社名に「google」が含まれているかどうかを確認するには、次のように更新します。

awk '$1~/google/{$4="NEW Status"}1' flatFile

他の列の詳細を定義する必要があります。

于 2011-10-17T13:14:56.353 に答える