-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 "|Processed" } {print}' 输入

其中 - 1.awk 命令将 srch 4 模式
2. 大括号中的 thng 将在最后一列更新

但这也给了我错误:如果它与行中的字符串匹配,它将在末尾添加带有“|已处理”字符串的列。
如果我再次运行该命令,它会在末尾再次添加该字符串。
该行看起来像
JAN FEB MAR |已处理 |已处理

现在,我想要的是用新的(根据条件)替换以前的“|已处理”值并相应地更新该值

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 回答
0

您可以使用 awk:

cat flatfile | awk '{ $4 = "New Status"; print }'
于 2011-10-17T11:10:57.900 回答