awk 域替换

2185阅读 0评论2010-03-10 greendays
分类:

[] [] [] []

有这样一条记录:Mike Harrington:(510) 548-1278:250:100:175F:
我想把Mike Harrington 替换成 xxx xxxxx 也就是在匹配以后把$1以给替换了,使用awk该怎么定?
__________________________________
Just enjoy you time


| | |

$1=xxxxx不就行了?
__________________________________

LIVE FREE OR DIE!     K.I.S.S.  DRY



| | |

本帖最后由 a.a 于 2010-03-09 11:21 编辑

awk -F":" '$1=="Louise Mcinnes" /Mike / ' lab4.data

这样?可以这样写:
awk -F":" '/Mike /{print $1="xx xxxx" $2 $3 $4}' lab4.data
这样也可以得出结果。但是需要手动把后面所有的域给打出来,$2 $3 $4
__________________________________
Just enjoy you time


| | |

[root@cestos5 shell]# awk -F: 'BEGIN{OFS=":"}{$1="xxx xxxxx";print}' urfile
xxx xxxxx:(510) 548-1278:250:100:175F:


| | |

回复 linuxboy823_cu


   这样倒是可以,但是就把整个文件的$1 全给替换了。
__________________________________
Just enjoy you time


| | |

本帖最后由 dujie_m 于 2010-03-09 11:27 编辑
  1. echo "Mike Harrington: ( 510 ) 548-1278:250:100:175F:" | awk 'BEGIN{OFS = ":" ;FS = ":"}gsub(/Mike Harrington/,"xxx xxxxx", $1)'
复制代码


| | |

本帖最后由 where27 于 2010-03-09 11:28 编辑

回复 a.a
  1. awk 'BEGIN{FS=":";OFS=":"}/Mike /{$1="xx xxxx" }1' lab4.data
复制代码
__________________________________
it民工
雄起!!


| | |

  1. awk -F: 'BEGIN{OFS=":"}/Mike Harrington/{$1="xx xxxx";print}' urfile
复制代码
__________________________________


| | |

本帖最后由 a.a 于 2010-03-10 09:40 编辑

感谢楼上的朋友们的回帖。几位的方法都能达到,谢谢了。
也可以参考我的另一种方法 :
awk -F: '/(Mike|Harrington){$1="xx xxxx";print}' file
__________________________________
Just enjoy you time


| | |
  » » »
上一篇:如何提取独一无二的最深的路径
下一篇:请问:cp不提示,直接覆盖参数是啥?