如果一个位置有另一个字符串,如果它的另一个字符串替换另一个字符串,则替换

时间:2014-07-18 13:03:18

标签: unix

嗨我有一个看起来像下面的文件,我需要检查第三个位置是否为W然后将其替换为A else如果是M则将其替换为unix中的X.有人可以帮忙吗?

输入文件:

CRM〜ABC〜M〜124

CRM〜CDF〜W〜875

预期输出:

CRM〜ABC〜X〜124

CRM〜CDF〜A〜875

提前致谢..

1 个答案:

答案 0 :(得分:0)

使用awk可以很容易地完成这项工作,同时将波形作为输入字段分隔符(FS)和输出字段分隔符(OFS)。然后,您只需根据需要替换第三个字段:

awk 'BEGIN {FS=OFS="~"} $3=="M" {$3="X"} $3=="W" {$3="A"} {print}' yourfile

sed答案更长:

sed 's/\(^[^~]*~[^~]*~\)M~/\1X~/;s/\(^[^~]*~[^~]*~\)W~/\1A~/' yourfile
相关问题