2013-06-24 35 views
1

我有一个N列的平面文件。我们如何在UNIX shell脚本中对此进行编程?

第N列在不同行中包含几次“abc”字。

如何将'abc'这个单词替换为'def'。

输出文件应该包含相同的数据,直到'N-1'列,只有在第N列中,单词'abc'的多个出现应该被更改为'def'。

请告知如何实现此目的。

问候, 斯里里

+1

是列固定宽度,或用定界符可变宽度?如果有分隔符,它是否也可以出现在字段中(大概是引用或以某种方式转义)? –

+0

嗨克里斯,分隔符是独特的':' – srihari

+0

列是可变宽度。数据中不会出现分隔符。谢谢。 – srihari

回答

1

随着awk

awk 'BEGIN{FS=OFS=":"}{$NF=($NF~/abc/)?"def":$NF}1' your_file 
+0

嗨JS非常感谢你的回答,请你给我解释一下上面的命令,再次感谢你的时间 – srihari

+0

不客气。 'NF'表示字段的数量。 '$ NF'将代表最后一列。因此,如果我们的最后一列像'abc',我们将其更改为'def'。如果不是,我们保持原样。 '1'告诉'awk'打印有或没有更改的行。 –