Awk 仅在字段3中替换

Awk 仅在字段3中替换,awk,Awk,我的语法有什么问题 awk -F '|' 'sub/\s*\w*/,"Visit our website!","$3"' merchant_report 应该是转弯了 |bob|jones| blagblag| texas |tom|markus| | alabama 进入 此行可以执行您想要的操作: awk -F'|' -v OFS="|" 'NR==1{$4="Visit our website!"}1' file 在您的awk代码中: 您已经使用了FS来分隔字段,您不需要子功能,只

我的语法有什么问题

awk -F '|' 'sub/\s*\w*/,"Visit our website!","$3"' merchant_report
应该是转弯了

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


此行可以执行您想要的操作:

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

  • 您已经使用了
    FS
    来分隔字段,您不需要
    子功能,只需直接设置
    $3
  • 即使使用
    sub()
    函数,语法也不正确。您可以通过
    mangawk
  • 它实际上不是
    $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

awk
中,您只需为字段指定给定行的新值。如果您对替代方法更满意,请尝试使用sed
sed

sed '1s/|[^|]*/|Visit our website!/3' file
|bob|jones|Visit our website!| texas
|tom|markus| | alabama
1) 并非所有AWK都支持\s和\w。2) sub()是一个函数,不是来自sed的“s”命令。3) 您可能希望将命令放在awk主体的动作部分,而不是contion(又名pattern)部分。现在请参阅awk手册,并购买Arnold Robbins的第三版《有效的awk编程》一书。
sed '1s/|[^|]*/|Visit our website!/3' file
|bob|jones|Visit our website!| texas
|tom|markus| | alabama