需要基于Unix中配置文件的生成文本中的值

时间:2014-07-17 08:49:33

标签: unix

我有一个基于配置文件生成的文本文件。 配置文件将包含我要生成的字段。 如下所示,

1)Configuration.txt 帐户,名称,serial_no

2)generated_file.txt

414d51204d5150525447575648415050529a6af298c,ß,200296125220140707123915  ,+0763
414d51204d5150525447575648415050529a6af2996,º,200303740520140707174224  ,+0657
414d51204d5150525447575648415050529a6af298b,|,200349107120140707120811  ,+0422
414d51204d5150525447575648415050529a6af298d,é,200510041820140707130954  ,+0664

因此在generated_file.txt中,帐号始终会有一些像这样的垃圾值

414d51204d5150525447575648415050529a6af298c,ß, - 一个单独的字段(例如,%,,¥,)。 所以我需要的是像字段2和字段3省略字段1有垃圾值。

Desired Output
200296125220140707123915  ,+0763
200303740520140707174224  ,+0657

我可以通过此命令获取该值。

但是如果配置文件中的字段数改变如下。我有 在脚本中更改查询,如下所示。我想手动做。

config.txt
account,name,serial_no,marks

我需要的是一个通用命令,它将占用config.txt中的多个字段 并取消所有字段省略field1(具有垃圾值的帐户)。

由于

2 个答案:

答案 0 :(得分:0)

如果要打印第3列和第4列:

cut -d, -f3,4 generated_file.txt

答案 1 :(得分:0)

您可以使用awk脚本:awk -F , '{ for(col=3;col<=NF;col++){printf $col ","} print ""}'
例:

Vikram:PROGS admin$ cat b.txt 
414d51204d5150525447575648415050529a6af298c,ß,200296125220140707123915  ,+0763, joy, HR
414d51204d5150525447575648415050529a6af2996,º,200303740520140707174224  ,+0657, bob
414d51204d5150525447575648415050529a6af298b,|,200349107120140707120811  ,+0422
414d51204d5150525447575648415050529a6af298d,é,200510041820140707130954  ,+0664

Vikram:PROGS admin$ cat b.txt | awk -F , '{ for(col=3;col<=NF;col++){printf $col ","} print ""}'
200296125220140707123915  ,+0763, joy, HR,
200303740520140707174224  ,+0657, bob,
200349107120140707120811  ,+0422,
200510041820140707130954  ,+0664,