我正在尝试解析一个包含标题列的平面文件
NAME COMPANY DETAILS STATUS etc
(数据之间的数据不同)。
当我使用该文件作为输入运行脚本时,我需要更新STATUS
列,并根据其他列的详细信息更新STATUS。
sed& vi不能用,显而易见。请帮忙。
我要解析的文件的摘录是: 我试图解析的文件摘录,问题是:
34 / * 1 2 3 4 5 6
35 / * 3456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
36 YYNNN LOCAL1 TRANSFER-CDM(仅限)=> local.transfer LOCAL
37 YYNNN LOCAL2 EXCHANGE-CATIA => IGES / DXF / STEP LOCAL
38 YYNNN ACIS1 C AutoWeb媒体服务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。
我试过了:
其中 - 1.awk命令wil srch 4模式
2.大括号中的内容将在最后一栏中更新
但这也给了我错误: 如果它与行中的字符串匹配,则在末尾添加“| Processed”字符串 如果我再次运行该命令,它会在最后添加该字符串 那一行看起来像 JAN FEB MAR |已处理|已处理
现在,我想要的是用新的值替换之前的“| Processed”值(根据条件)并相应地更新该值
答案 0 :(得分:1)
你应该定义
取决于其他栏目的详细信息。
有什么细节?
e.g。如果DETAILS列值== 1然后执行更新,您可以执行以下操作:
awk '$3==1{$4="NEW STATUS"}1' yourFlatFile
如果要查看,如果公司名称包含“google”,则执行更新:
awk '$1~/google/{$4="NEW Status"}1' flatFile
您必须定义其他列的详细信息。
答案 1 :(得分:0)
您可以使用awk:
cat flatfile | awk '{ $4 = "New Status"; print }'