File 如何解析&;使用UNIX脚本更新平面文件

File 如何解析&;使用UNIX脚本更新平面文件,file,shell,unix,flat,File,Shell,Unix,Flat,我正试图解析一个按标题列的平面文件 名称公司详细信息状态等(其中数据本身不同) 当我使用该文件作为输入运行脚本时,我需要更新STATUS列,状态根据其他列的详细信息进行更新 显然,sed和vi不能使用。请帮忙 我正在尝试分析的文件摘录如下: 我试图解析的文件的一个摘录是: 34/*123456 35/*34567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890

我正试图解析一个按标题列的平面文件
名称公司详细信息状态等
(其中数据本身不同)

当我使用该文件作为输入运行脚本时,我需要更新
STATUS
列,状态根据其他列的详细信息进行更新

显然,sed和vi不能使用。请帮忙

我正在尝试分析的文件摘录如下: 我试图解析的文件的一个摘录是:

34/*123456
35/*34567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
36 YYNNN LOCAL1 TRANSFER-CDM(仅)=>local.TRANSFER local
37 YYNNN LOCAL2 EXCHANGE-CATIA=>IGES/DXF/STEP LOCAL
38 YYNNN ACIS1 C自动网络媒体服务CCX
39 YYNNN ACNC1 C汽车/Con公司CCX
40 YYNNN ACST1 C Accurcast公司CCX
41 YYNNN AAGD1 C阿尔冈金汽车CCX


现在我需要做的是解析这个平面文件,第6列将添加为STATUS

我试过:

awk'/23861/{$0=$0“|已处理”}{print}输入 其中-1.awk命令将srch 4模式
2.方括号内的thng将在最后一列中更新

但这也给了我错误: 如果该列与行中的字符串匹配,则在末尾添加带有“| Processed”字符串的列。
如果我再次运行该命令,它会在末尾再次添加该字符串。
那一排看起来像
一月至二月至三月|已处理|已处理

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

您可以使用awk:

cat flatfile | awk '{ $4 = "New Status"; print }'
你应该定义

取决于其他列的详细信息

什么细节

e、 g.如果详细信息列值==1,则执行更新,您可以执行以下操作:

awk '$3==1{$4="NEW STATUS"}1' yourFlatFile
如果您想检查,如果公司名称包含“google”,您可以执行以下更新:

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

您必须定义其他列的详细信息。

但它将更新整个文件的整个第4列;我需要根据特定行的内容更新状态,如其他列所示…请查看更新的问题字符串…我试图将其编辑为
awk'{$4=“New STATUS”;print}'平面文件
,因为这里的cat是多余的,但我认为它工作正常。在不需要其他可执行文件的情况下调用其他可执行文件有点让我恼火。你能给我看一下这个文件的示例吗。使用awk是可能的,但是我们如何知道要查找什么呢?对命令中提到的字符串模式还有一个疑问。。字符串模式在/pattern/中提到。它将实际字符串放入其中。但是,它没有将变量作为输入,就像我将变量邮箱作为/$mailbox/放入其中一样,它没有按预期提供输出…请查看更新的问题字符串…如果我希望将google字符串存储在变量中,该怎么办??