仅在场3中替换

时间:2013-04-30 16:09:53

标签: awk

我的语法出了什么问题?

awk -F '|' 'sub/\s*\w*/,"Visit our website!","$3"' merchant_report

假设转

|bob|jones| blagblag| texas
|tom|markus| | alabama

|bob|jones|Visit our website!| texas
|tom|markus| | alabama

2 个答案:

答案 0 :(得分:1)

这一行可以做你想做的事:

awk -F'|' -v OFS="|" 'NR==1{$4="Visit our website!"}1' file
你的awk代码中的

  • 您已经FS分隔字段,您不需要sub功能,只需直接设置$3
  • 即使使用sub( )函数,您的语法也不正确。您可以通过man gawk
  • 获取详细信息
  • 实际上不是$3,而是$4。因为您的行以|
  • 开头
  • 如果您只想更改第一行,则应添加NR==1,否则awk将对所有行进行更改

代码示例:

kent$  cat file
    |bob|jones| blagblag| texas
    |tom|markus| | alabama

kent$  awk -F'|' -v OFS="|" 'NR==1{$4="Visit our website!"}1' file
    |bob|jones|Visit our website!| texas
    |tom|markus| | alabama

答案 1 :(得分:0)

awk中,您只需为该字段指定给定行的新值。如果您对替换方法感到满意,请尝试sed

sed '1s/|[^|]*/|Visit our website!/3' file
|bob|jones|Visit our website!| texas
|tom|markus| | alabama