0

我的语法有什么问题?

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
4

2 回答 2

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
于 2013-04-30T16:15:00.263 回答
0

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

sed '1s/|[^|]*/|Visit our website!/3' file
|bob|jones|Visit our website!| texas
|tom|markus| | alabama
于 2013-04-30T16:18:47.267 回答